部分代码: 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,请问是怎么回事呢?另外,存储过程中的事物处理是这样做的么?
谢谢!

解决方案 »

  1.   

    CREATE PROCEDURE newcharacter_sp @charid bigint, 
    @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