存储过程是以下的:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[spAddtbRepository]--插入知识库信息
@RepositoryID numeric OUT, --知识点ID
@RepositoryCategoryID numeric, --类型编号
@RepositoryForRevisionyID numeric, --知识库版本ID
@ParentRepositoryID numeric, --上级ID
@Level int, --1级最高,依次递增
@SerialNumber int, --在同一父ID下的序号
@ShortText nvarchar(256), --内容简写
@FullText nvarchar(2048), --内容
@Hint nvarchar(2048), --提示信息,第二版新增,满足用户需求
@Re nvarchar, --备注 在用户完成时,如果未完成该项,则提示警告用户完成该项
@QuestionOrAnswer int, --问题答案1:问题;2:答案;3:问题答案兼有
@Symbol nvarchar(256), --标识符
@LastVersionRepositoryID numeric --上一个版本对应ID AS
DECLARE @ret AS INT;
BEGIN
SET NOCOUNT ON
SET @ret = 0;
BEGIN TRY
INSERT INTO tbRepository(RepositoryCategoryID, RepositoryForRevisionyID,
ParentRepositoryID, [Level], SerialNumber, ShortText, [FullText], Hint, Re,
QuestionOrAnswer, Symbol, LastVersionRepositoryID)
VALUES(@RepositoryCategoryID, @RepositoryForRevisionyID,
@ParentRepositoryID, @Level, @SerialNumber, @ShortText, @FullText, @Hint, @Re,
@QuestionOrAnswer, @Symbol, @LastVersionRepositoryID)
SELECT @ret = @@IDENTITY
END TRY
BEGIN CATCH
SET @ret = 0;
END CATCH SET @RepositoryID = @ret;
RETURN @ret;
END
VC里面我这样写的:
m_pCommand->CommandText = _bstr_t("spAddtbRepository");
m_pCommand->CommandType = adCmdStoredProc;
m_pCommand->Parameters->Refresh(); int iRet = 0;
_ParameterPtr pParaReturnID;
pParaReturnID = m_pCommand->CreateParameter( _bstr_t("@ret"), adInteger, adParamReturnValue, sizeof(int), iRet);
m_pCommand->Parameters->Append(pParaReturnID); _ParameterPtr pParaID;
pParaID = m_pCommand->CreateParameter( _bstr_t("@RepositoryID"), adNumeric, adParamOutput, sizeof(int), treeNode->iID);
m_pCommand->Parameters->Append(pParaID); _ParameterPtr pParaCategoryID;
pParaCategoryID = m_pCommand->CreateParameter( _bstr_t("@RepositoryCategoryID"), adNumeric, adParamInput, sizeof(int), treeNode->iType);
m_pCommand->Parameters->Append(pParaCategoryID); _ParameterPtr pParaRevisionyID;
pParaRevisionyID = m_pCommand->CreateParameter( _bstr_t("@RepositoryForRevisionyID"), adNumeric, adParamInput, sizeof(int), treeNode->iVersionID);
m_pCommand->Parameters->Append(pParaRevisionyID); _ParameterPtr pParaParentRepositoryID;
pParaParentRepositoryID = m_pCommand->CreateParameter( _bstr_t("@ParentRepositoryID"), adNumeric, adParamInput, sizeof(int), treeNode->iParentID);
m_pCommand->Parameters->Append(pParaParentRepositoryID); _ParameterPtr pParaLevel;
pParaLevel = m_pCommand->CreateParameter( _bstr_t("@Level"), adInteger, adParamInput, sizeof(int), treeNode->iLayID);
m_pCommand->Parameters->Append(pParaLevel); _ParameterPtr pParaSerialNumber;
pParaSerialNumber = m_pCommand->CreateParameter( _bstr_t("@SerialNumber"), adInteger, adParamInput, sizeof(int), treeNode->iSortNO);
m_pCommand->Parameters->Append(pParaSerialNumber); _ParameterPtr pParaShortText;
pParaShortText = m_pCommand->CreateParameter( _bstr_t("@ShortText"), adWChar, adParamInput, 128, _variant_t(treeNode->szSContents));
m_pCommand->Parameters->Append(pParaShortText); _ParameterPtr pParaFullText;
pParaFullText = m_pCommand->CreateParameter( _bstr_t("@FullText"), adWChar, adParamInput, 128, _variant_t(treeNode->szContents));
m_pCommand->Parameters->Append(pParaFullText); _ParameterPtr pParaHint;
pParaHint = m_pCommand->CreateParameter( _bstr_t("@Hint"), adWChar, adParamInput, 128, _variant_t(treeNode->szTipContents));
m_pCommand->Parameters->Append(pParaHint); _ParameterPtr pParaRe;
pParaRe = m_pCommand->CreateParameter( _bstr_t("@Re"), adWChar, adParamInput, 1, NULL);
m_pCommand->Parameters->Append(pParaRe); _ParameterPtr pParaQuestionOrAnswer;
pParaQuestionOrAnswer = m_pCommand->CreateParameter( _bstr_t("@QuestionOrAnswer"), adInteger, adParamInput, sizeof(int), 1);
m_pCommand->Parameters->Append(pParaQuestionOrAnswer); _ParameterPtr pParaSymbol;
pParaSymbol = m_pCommand->CreateParameter( _bstr_t("@Symbol"), adWChar, adParamInput, 128, NULL);
m_pCommand->Parameters->Append(pParaSymbol); _ParameterPtr pParaLastVersionRepositoryID;
pParaLastVersionRepositoryID = m_pCommand->CreateParameter( _bstr_t("@LastVersionRepositoryID"), adNumeric, adParamInput, sizeof(int), 1);
m_pCommand->Parameters->Append(pParaLastVersionRepositoryID); m_pCommand->Execute(NULL, NULL, adCmdStoredProc);//总是报"多步OLEDB操作产生错误",请问是怎么回事呢??
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[spAddtbRepository]--插入知识库信息
@RepositoryID numeric OUT, --知识点ID
@RepositoryCategoryID numeric, --类型编号
@RepositoryForRevisionyID numeric, --知识库版本ID
@ParentRepositoryID numeric, --上级ID
@Level int, --1级最高,依次递增
@SerialNumber int, --在同一父ID下的序号
@ShortText nvarchar(256), --内容简写
@FullText nvarchar(2048), --内容
@Hint nvarchar(2048), --提示信息,第二版新增,满足用户需求
@Re nvarchar, --备注 在用户完成时,如果未完成该项,则提示警告用户完成该项
@QuestionOrAnswer int, --问题答案1:问题;2:答案;3:问题答案兼有
@Symbol nvarchar(256), --标识符
@LastVersionRepositoryID numeric --上一个版本对应ID AS
DECLARE @ret AS INT;
BEGIN
SET NOCOUNT ON
SET @ret = 0;
BEGIN TRY
INSERT INTO tbRepository(RepositoryCategoryID, RepositoryForRevisionyID,
ParentRepositoryID, [Level], SerialNumber, ShortText, [FullText], Hint, Re,
QuestionOrAnswer, Symbol, LastVersionRepositoryID)
VALUES(@RepositoryCategoryID, @RepositoryForRevisionyID,
@ParentRepositoryID, @Level, @SerialNumber, @ShortText, @FullText, @Hint, @Re,
@QuestionOrAnswer, @Symbol, @LastVersionRepositoryID)
SELECT @ret = @@IDENTITY
END TRY
BEGIN CATCH
SET @ret = 0;
END CATCH SET @RepositoryID = @ret;
RETURN @ret;
END
VC里面我这样写的:
m_pCommand->CommandText = _bstr_t("spAddtbRepository");
m_pCommand->CommandType = adCmdStoredProc;
m_pCommand->Parameters->Refresh(); int iRet = 0;
_ParameterPtr pParaReturnID;
pParaReturnID = m_pCommand->CreateParameter( _bstr_t("@ret"), adInteger, adParamReturnValue, sizeof(int), iRet);
m_pCommand->Parameters->Append(pParaReturnID); _ParameterPtr pParaID;
pParaID = m_pCommand->CreateParameter( _bstr_t("@RepositoryID"), adNumeric, adParamOutput, sizeof(int), treeNode->iID);
m_pCommand->Parameters->Append(pParaID); _ParameterPtr pParaCategoryID;
pParaCategoryID = m_pCommand->CreateParameter( _bstr_t("@RepositoryCategoryID"), adNumeric, adParamInput, sizeof(int), treeNode->iType);
m_pCommand->Parameters->Append(pParaCategoryID); _ParameterPtr pParaRevisionyID;
pParaRevisionyID = m_pCommand->CreateParameter( _bstr_t("@RepositoryForRevisionyID"), adNumeric, adParamInput, sizeof(int), treeNode->iVersionID);
m_pCommand->Parameters->Append(pParaRevisionyID); _ParameterPtr pParaParentRepositoryID;
pParaParentRepositoryID = m_pCommand->CreateParameter( _bstr_t("@ParentRepositoryID"), adNumeric, adParamInput, sizeof(int), treeNode->iParentID);
m_pCommand->Parameters->Append(pParaParentRepositoryID); _ParameterPtr pParaLevel;
pParaLevel = m_pCommand->CreateParameter( _bstr_t("@Level"), adInteger, adParamInput, sizeof(int), treeNode->iLayID);
m_pCommand->Parameters->Append(pParaLevel); _ParameterPtr pParaSerialNumber;
pParaSerialNumber = m_pCommand->CreateParameter( _bstr_t("@SerialNumber"), adInteger, adParamInput, sizeof(int), treeNode->iSortNO);
m_pCommand->Parameters->Append(pParaSerialNumber); _ParameterPtr pParaShortText;
pParaShortText = m_pCommand->CreateParameter( _bstr_t("@ShortText"), adWChar, adParamInput, 128, _variant_t(treeNode->szSContents));
m_pCommand->Parameters->Append(pParaShortText); _ParameterPtr pParaFullText;
pParaFullText = m_pCommand->CreateParameter( _bstr_t("@FullText"), adWChar, adParamInput, 128, _variant_t(treeNode->szContents));
m_pCommand->Parameters->Append(pParaFullText); _ParameterPtr pParaHint;
pParaHint = m_pCommand->CreateParameter( _bstr_t("@Hint"), adWChar, adParamInput, 128, _variant_t(treeNode->szTipContents));
m_pCommand->Parameters->Append(pParaHint); _ParameterPtr pParaRe;
pParaRe = m_pCommand->CreateParameter( _bstr_t("@Re"), adWChar, adParamInput, 1, NULL);
m_pCommand->Parameters->Append(pParaRe); _ParameterPtr pParaQuestionOrAnswer;
pParaQuestionOrAnswer = m_pCommand->CreateParameter( _bstr_t("@QuestionOrAnswer"), adInteger, adParamInput, sizeof(int), 1);
m_pCommand->Parameters->Append(pParaQuestionOrAnswer); _ParameterPtr pParaSymbol;
pParaSymbol = m_pCommand->CreateParameter( _bstr_t("@Symbol"), adWChar, adParamInput, 128, NULL);
m_pCommand->Parameters->Append(pParaSymbol); _ParameterPtr pParaLastVersionRepositoryID;
pParaLastVersionRepositoryID = m_pCommand->CreateParameter( _bstr_t("@LastVersionRepositoryID"), adNumeric, adParamInput, sizeof(int), 1);
m_pCommand->Parameters->Append(pParaLastVersionRepositoryID); m_pCommand->Execute(NULL, NULL, adCmdStoredProc);//总是报"多步OLEDB操作产生错误",请问是怎么回事呢??
解决方案 »
- WM_PAINT消息怎么绘制被覆盖的区域
- .exe not found or not built by the last incremental link; performing full link可能是什么原因
- Bitblt更换位图(SDK程序)
- 用ATL向导做COM .exe,如何手工添加连接点支持?
- 调试问题:TouchExplorer.exe没有包含debugging信息。
- 高分相送:列表框删除时遇到的问题
- 谁有《Visual C++ MFC扩展编程实例》中的程序源代码?
- 有两家公司:1东软国际商务软件公司 2:大连华信 从前途考虑,你会选择哪家?
- 谁有水晶报表的注册码呢?谢谢!给分100
- VC中调用在matlab中实现的com组件,如何使该程序脱离matlab环境?
- 为什么DLL可以编链,却不跑?
- 请问,多文档程序中,每个view窗口的左上角的图标都是系统默认,我如何自定义自己的图标,让新建的每个view左上角图标不同?
m_pCommand->Parameters->Item[_variant_t(_bstr_t("@QuestionOrAnswer") )]->Value =?;//这个字段可以为空,想在数据库中传个NULL,结果不行,不给这个字段赋值,结果又出错。。
或者
m_pCommand->Parameters->Item[_variant_t(_bstr_t("@QuestionOrAnswer") )]->Value = VT_NULL; 这样你都试试吧,具体我也不记得了,n久不玩ADO了
因为,如果你从记录集取记录
是通过
var = pRecordset->GetCollect(_T("field"));
if(var.vt!=VT_NULL)
{
str= (LPCTSTR)_bstr_t(var);
}
var.vt!=VT_NULL 这样来判断是否取得字段为空的
所以,你一定要传个NULL进去,穿个值为NULL的_variant_t进去关于如何将_variant_t_variant_t var; var.vt=VT_NULL;或者
m_pCommand->Parameters->Item[_variant_t(_bstr_t("@QuestionOrAnswer") )]->Value =_variant_t(NULL)这样?
如果是字符为空,那传个“”
pParaRe = m_pCommand->CreateParameter( _bstr_t("@Re"), adWChar, adParamInput, 1, NULL);
不就是把这个参数的值设为NULL吗??
这样不对??
或者m_pCommand->Parameters->Item[_variant_t(_bstr_t("("@Symbol") )]->Value =""
都不对..
的时候,把最后一个参数设为NULL可以吗??
m_pCommand->Parameters->Item[_variant_t(_bstr_t("@QuestionOrAnswer") )]->Value = VT_NULL;
可以吗??
这样可以:
_variant_t var;
var.vt=VT_NULL;
m_pCommand->Parameters->Item[_variant_t(_bstr_t("@QuestionOrAnswer") )]->Value = var;
其他的均不行。。真是奇怪哦。。
m_pCommand->Parameters->Item[_variant_t(_bstr_t("@QuestionOrAnswer") )]->Value = var;(可以)
m_pCommand->Parameters->Item[_variant_t(_bstr_t("@QuestionOrAnswer") )]->Value =
VT_NULL;(不可以)
我觉得这两个应该是一样的阿。。真是奇怪哦。。