研究网狐读取数据库字段<二>
来源:互联网 发布:win10蓝牙 软件 编辑:程序博客网 时间:2024/04/29 04:02
经过这几天的研究,总算成功的从数据库中读取到了字段内容,还要多亏了好心人的帮助。
一、首先要写一个存储过程:脚本如下
----------------------------------------------------------------------------------------------------
USE QPAccountsDB
GO
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[GSP_GP_PlayTimeCount]') and OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[GSP_GP_PlayTimeCount]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
----------------------------------------------------------------------------------------------------
-- 获取游戏时长
CREATE PROC GSP_GP_PlayTimeCount
@dwUserID INT -- 用户 I D
AS
-- 属性设置
SET NOCOUNT ON
-- 执行逻辑
BEGIN
-- 变量定义
DECLARE @PlayTimeCount INT --游戏时长
DECLARE @UserID INT
-- 查询用户
SELECT @PlayTimeCount=PlayTimeCount
FROM QPTreasureDBLink.QPTreasureDB.dbo.GameScoreInfo WHERE UserID=@dwUserID
-- 输出变量
SELECT @PlayTimeCount AS PlayTimeCount
END
RETURN 0
GO
----------------------------------------------------------------------------------------------------
二、在服务端的DataBaseEngineSink.cpp下的登录成功CDataBaseEngineSink::OnLogonDisposeResult这个函数,添加如下代码,代码存放位置为上一个数据库获取字段结束。
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),LogonSuccess.dwUserID);
m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_PlayTimeCount"),true);
LogonSuccess.szPlayTimeCount=m_AccountsDBAide.GetValue_DWORD(TEXT("PlayTimeCount"));
----------------------------------------------------------------------------------------------------
三、可以增加调试手段来查看数据是否正确,比如显示信息在登录服务器消息框。
CString str;
str.Format(TEXT("PlayTimeCount=%d %d"),pCMDLogonSuccess->dwGameID,pDBOLogonSuccess->szPlayTimeCount);
CTraceService::TraceString(str,TraceLevel_Debug);
比如在游戏大厅增加弹窗效果:
CString str;
str.Format(TEXT("time=%d"),pGlobalUserData->dwPlayTimeCount);
AfxMessageBox(str);
文件流模式:
FILE *fp=fopen("S积分记录.txt","a+");
fprintf(fp,"need_user_score:%lld,user_leave_score:%lld,GetUserScore():%lld\n",need_user_score,user_leave_score,server_user_item->GetUserScore());
fclose(fp);
----------------------------------------------------------------------------------------------------
四、注意结构体问题,新增的字段切记不要放在结构体的尾端,尾端有可能本来是用于计算结构体大小的。
//登录成功
struct DBO_GP_LogonSuccess
{
//属性资料
WORD wFaceID; //头像标识
DWORD dwUserID; //用户标识
DWORD dwGameID; //游戏标识
DWORD dwGroupID; //社团标识
DWORD dwCustomID; //自定索引
DWORD dwUserMedal; //用户奖牌
DWORD dwExperience; //经验数值
DWORD dwLoveLiness; //用户魅力
DWORD dwGoldZl; //金币种类
TCHAR szPassword[LEN_MD5]; //登录密码
TCHAR szAccounts[LEN_ACCOUNTS]; //登录帐号
TCHAR szNickName[LEN_NICKNAME]; //用户昵称
TCHAR szGroupName[LEN_GROUP_NAME]; //社团名字
//游戏时长
DWORD szPlayTimeCount;
//用户成绩
SCORE lUserScore; //用户游戏币
SCORE lUserInsure; //用户银行
//用户资料
BYTE cbGender; //用户性别
BYTE cbMoorMachine; //锁定机器
TCHAR szUnderWrite[LEN_UNDER_WRITE]; //个性签名
//会员资料
BYTE cbMemberOrder; //会员等级
SYSTEMTIME MemberOverDate; //到期时间
//描述信息
TCHAR szDescribeString[128]; //描述消息
//切记新增字段不要放在尾端。
};
五、需要不断的跟踪调试,才能达到想要的效果,最后我成功在客户端获取到了该PlayTimeCount字段信息。
- 研究网狐读取数据库字段<二>
- 研究网狐读取数据库字段<一>
- 读取数据库中BLOB字段
- 读取excl字段插入数据库
- 数据库二进制字段读取问题(long raw)
- JAVA读取Oracle数据库BLOB字段
- 读取数据库字段的DLL编写
- php读取xml 数据库字段超长处理
- JAVA读取Oracle数据库BLOB字段
- java读取oracle数据库中blob字段
- java读取数据库char类型字段问题
- 读取mysql数据库表格中的字段和字段注解
- 数据库库设计:字段默认值二
- (二)上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)
- flash研究(二)——访问数据库
- 关于用ADO读取数据库中空字段的发现
- 读取数据库名及表与表中的字段
- 如何读取SQL数据库中某个字段的值
- Spark Streaming的Exactly-One的事务处理和不重复输出彻底掌握
- 使用ANT打包Android应用
- 常见的磁盘调度算法
- HDU 3374String Problem
- 算法小结--快速排序+归并排序
- 研究网狐读取数据库字段<二>
- 谷歌Advanced Rest Client 使用
- linux查找日志技巧
- 阿里云ecs云服务器安装wdcp控制面板教程
- Androin学习笔记四十三:Socket(示例,出错代码)
- Android的音频录制与播放
- 服务器分类
- 练习三1013
- 电平阈值