C++ getvalue值错误

火炎焱燚王 2015-06-09 06:30:32
-------------------O(∩_∩)O~----------------------

取值的代码是这两个, UserID取值是正确的, 但是CustomID是取值是零, 但是数据库里面写的不是零。

我看了两个字段的属性 都是int, 不知道为什么会出现这个问题。


//取值代码
m_LogonSuccess.dwUserID=m_GameDBAide.GetValue_DWORD(TEXT("UserID"));
m_LogonSuccess.dwCustomID=m_GameDBAide.GetValue_DWORD(TEXT("CustomID"));

// GetValue的具体操作

DWORD CDataBaseAide::GetValue_DWORD(LPCTSTR pszItem)
{
DWORD ulValue;
if (m_pIDataBase != NULL)
{
((CDataBase*)m_pIDataBase)->GetFieldValue(pszItem, ulValue);
return ulValue;

}
return 0;
}



取值之前, 调用了这个存储过程,


----------------------------------------------------------------------------------------------------

-- I D 登录
ALTER PROC [dbo].[GSP_GR_EfficacyUserID]
@dwUserID INT -- 用户 I D
--@strPassword NCHAR(32), -- 用户密码
--@strClientIP NVARCHAR(15), -- 连接地址
--@strMachineID NVARCHAR(32), -- 机器标识
--@wKindID SMALLINT, -- 游戏 I D
--@wServerID SMALLINT, -- 房间 I D
--@strErrorDescribe NVARCHAR(127) OUTPUT -- 输出信息
--WITH ENCRYPTION
AS

-- 属性设置
SET NOCOUNT ON

-- 基本信息
DECLARE @UserID INT
DECLARE @FaceID SMALLINT
DECLARE @CustomID INT
DECLARE @NickName NVARCHAR(31)
DECLARE @UnderWrite NVARCHAR(63)

-- 扩展信息
DECLARE @GameID INT
DECLARE @GroupID INT
DECLARE @UserRight INT
DECLARE @Gender TINYINT
DECLARE @MasterRight INT
DECLARE @MasterOrder SMALLINT
DECLARE @MemberOrder SMALLINT
DECLARE @GroupName NVARCHAR(31)

-- 积分变量
DECLARE @Score BIGINT
DECLARE @Grade BIGINT
DECLARE @Insure BIGINT
DECLARE @WinCount INT
DECLARE @LostCount INT
DECLARE @DrawCount INT
DECLARE @FleeCount INT
DECLARE @UserMedal INT
DECLARE @Experience INT
DECLARE @LoveLiness INT

-- 执行逻辑
BEGIN

-- 辅助变量
DECLARE @EnjoinLogon INT



-- 查询用户
DECLARE @Nullity BIT
DECLARE @StunDown BIT
DECLARE @LogonPass AS NCHAR(32)
DECLARE @MachineID NVARCHAR(32)
DECLARE @MoorMachine AS TINYINT
SELECT @UserID=UserID, @GameID=GameID, @NickName=NickName, @UnderWrite=UnderWrite, @LogonPass=LogonPass, @FaceID=FaceID, @CustomID=CustomID,
@Gender=Gender, @Nullity=Nullity, @StunDown=StunDown, @UserMedal=UserMedal, @Experience=Experience, @LoveLiness=LoveLiness, @UserRight=UserRight,
@MasterRight=MasterRight, @MasterOrder=MasterOrder, @MemberOrder=MemberOrder, @MoorMachine=MoorMachine, @MachineID=LastLogonMachine
FROM QPAccountsDBLink.QPAccountsDB.dbo.AccountsInfo WHERE UserID=@dwUserID

-- 输出变量
SELECT @UserID AS UserID, @CustomID AS CustomID

END

RETURN 0



我怀疑是存储过程的问题, 把存储过程改成了很简单的值返回一个9的存储过程, 但是这个9 还是拿不到, 请问这是怎么回事?


我现在的想法是, 是不是存储过程上会加上一些限定, 但是也不成立, 因为不是存储过程的所有值都有问题而是只有一部分有问题
...全文
309 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2015-06-10
  • 打赏
  • 举报
回复
CDataBase 有 GetFieldValue ? CRecordset 的 GetFieldValue 必须按顺序取
CString strVal;
((CRecordset *)p)->SetRowsetCursorPosition(1)
((CRecordset *)p)->GetFieldValue(sName, strVal);
return _tcstoul(strVal, NULL, 10);
lzhuman2 2015-06-10
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
你单独调试存储过程啊,看看是否有正确的输出。
按理说, 这种错误应该是代码或者认为的失误的可能性比较大, 我想问下, 那几个地方会影响到这个取值呢?
lzhuman2 2015-06-10
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
存储过程中增加一些信息,看是不是没有获取到对应的数据
你好, 我就是提问者, 我单独执行存储过程输出结果是没有问题的。 1. 比较奇怪的地方是两个地方, UserID能成功, 而CustomID不成功。 从代码和存储过程中我找不到有什么区别 表中的字段属性也是一摸一样的, 不知道还有什么没有考虑到的地方还是我某个地方疏忽了。 现在看来是后者的可能性大一点。
lzhuman2 2015-06-10
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
你单独调试存储过程啊,看看是否有正确的输出。
你好我就是提问者, 我单独调试输出结果也没有问题。
oyljerry 2015-06-09
  • 打赏
  • 举报
回复
存储过程中增加一些信息,看是不是没有获取到对应的数据
快乐鹦鹉 2015-06-09
  • 打赏
  • 举报
回复
你单独调试存储过程啊,看看是否有正确的输出。

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧