部分代码: mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charid",adInteger,adParamInput,sizeof(int),vCharInfo.CharID);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charname",adVarChar,adParamInput,sizeof(vCharInfo.szCharName),vCharInfo.szCharName);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charsex",adChar,adParamInput,sizeof(vCharInfo.Sex),vCharInfo.Sex);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charprofession",adChar,adParamInput,sizeof(vCharInfo.Profession),vCharInfo.Profession);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("chartribe",adChar,adParamInput,sizeof(vCharInfo.Tribe),vCharInfo.Tribe);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
if(NULL == mDBManager.ExecuteSP("newcharacter_sp"))
{
return DBERROR_NORMAIL;
} mDBManager.GetCommand()->Parameters->Delete("charid");
mDBManager.GetCommand()->Parameters->Delete("charname");
mDBManager.GetCommand()->Parameters->Delete("charsex");
mDBManager.GetCommand()->Parameters->Delete("charprofession");
mDBManager.GetCommand()->Parameters->Delete("chartribe");CREATE PROCEDURE newcharacter_sp @charid bigint,
@charname varchar(16),
@charsex char,
@charprefession char,
@chartribe char
AS
BEGIN
BEGIN TRAN
INSERT INTO CHARACTER_INFO(CHAR_ID,CHAR_NAME,CHAR_SEX,CHAR_PROFESSION,CHAR_TRIBE)
VALUES (@charid,@charname,@charsex,@charprefession,@chartribe)
if @@ERROR <> 0
BEGIN
ROLLBACK TRAN
END
else
BEGIN
COMMIT TRAN
END
END
GO
在传参数的时候 当参数是单个字符的时候,如上面的 Sex,Profession,Tribe都是单个字符,就会提示在应用程序中使用了错误的值,但我在差文档的时候也没找到合适的类型 ,仅有adChar adVarChar.我有这样去测试过 mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charsex",adChar,adParamInput,sizeof(vCharInfo.Sex)+1,vCharInfo.Sex);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charprofession",adChar,adParamInput,sizeof(vCharInfo.Profession)+1,vCharInfo.Profession);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("chartribe",adChar,adParamInput,sizeof(vCharInfo.Tribe)+1,vCharInfo.Tribe);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
但却发现传进去的值 ‘1’ ‘0’等值 在插入数据库的时候却是4,请问是怎么回事呢?另外,存储过程中的事物处理是这样做的么?
谢谢!
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charname",adVarChar,adParamInput,sizeof(vCharInfo.szCharName),vCharInfo.szCharName);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charsex",adChar,adParamInput,sizeof(vCharInfo.Sex),vCharInfo.Sex);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charprofession",adChar,adParamInput,sizeof(vCharInfo.Profession),vCharInfo.Profession);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("chartribe",adChar,adParamInput,sizeof(vCharInfo.Tribe),vCharInfo.Tribe);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
if(NULL == mDBManager.ExecuteSP("newcharacter_sp"))
{
return DBERROR_NORMAIL;
} mDBManager.GetCommand()->Parameters->Delete("charid");
mDBManager.GetCommand()->Parameters->Delete("charname");
mDBManager.GetCommand()->Parameters->Delete("charsex");
mDBManager.GetCommand()->Parameters->Delete("charprofession");
mDBManager.GetCommand()->Parameters->Delete("chartribe");CREATE PROCEDURE newcharacter_sp @charid bigint,
@charname varchar(16),
@charsex char,
@charprefession char,
@chartribe char
AS
BEGIN
BEGIN TRAN
INSERT INTO CHARACTER_INFO(CHAR_ID,CHAR_NAME,CHAR_SEX,CHAR_PROFESSION,CHAR_TRIBE)
VALUES (@charid,@charname,@charsex,@charprefession,@chartribe)
if @@ERROR <> 0
BEGIN
ROLLBACK TRAN
END
else
BEGIN
COMMIT TRAN
END
END
GO
在传参数的时候 当参数是单个字符的时候,如上面的 Sex,Profession,Tribe都是单个字符,就会提示在应用程序中使用了错误的值,但我在差文档的时候也没找到合适的类型 ,仅有adChar adVarChar.我有这样去测试过 mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charsex",adChar,adParamInput,sizeof(vCharInfo.Sex)+1,vCharInfo.Sex);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("charprofession",adChar,adParamInput,sizeof(vCharInfo.Profession)+1,vCharInfo.Profession);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
mDBManager.GetParameter() = mDBManager.GetCommand()->CreateParameter("chartribe",adChar,adParamInput,sizeof(vCharInfo.Tribe)+1,vCharInfo.Tribe);
mDBManager.GetCommand()->Parameters->Append(mDBManager.GetParameter());
但却发现传进去的值 ‘1’ ‘0’等值 在插入数据库的时候却是4,请问是怎么回事呢?另外,存储过程中的事物处理是这样做的么?
谢谢!
@charname varchar(16),
--modify *********************************************
--你要定义长度的,长度不够。
@charsex varchar(50),
@charprefession varchar(50),
@chartribe varchar(50)
AS
BEGIN
BEGIN TRAN
INSERT INTO CHARACTER_INFO(CHAR_ID,CHAR_NAME,CHAR_SEX,CHAR_PROFESSION,CHAR_TRIBE)
VALUES (@charid,@charname,@charsex,@charprefession,@chartribe)
if @@ERROR <> 0
BEGIN
ROLLBACK TRAN
END
else
BEGIN
COMMIT TRAN
END
END
GO