- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C语言也能干大事》剩余部分
《C语言也能干大事》第十七节:数据库开发41、处理数据库查询
序号从1开始,不是0
SQLINTEGER cbsatid=SQL_NTS;
? ? while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
? ? {
? ?? ?? ?? ?? ?? ? SQLCHAR name[20];
? ?? ???SQLGetData(hstmt,1,SQL_C_CHAR,name,20,cbsatid);
? ? }
复制代码
SQLINTEGER cbsatid=SQL_NTS;
while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
{
SQLINTEGER i;
SQLGetData(hstmt,2,SQL_C_LONG,i,sizeof(SQLINTEGER),cbsatid);
}
复制代码
乱码问题解决方式,连接字符串使用GBK,修改数据库默认编码为gbk
4、保存HDBC到全局变量中,长连接、短连接。比如Java、C#中访问数据库复杂多少。一通百通。
要掌握调试的技巧,分析问题可能出错的原因和出错的地方,然后调试分析。一定不能和书上不一致,就懵了
5、自己动手写用户管理系统:新增密码字段、新建用户,检验登录;
SQLINTEGER cbsatid=SQL_NTS;
//需要一行一行的读取,这种方式就叫做通过游标读取,无论是在JDBC、ADO/ADO.net。。。结果集
//调用SQLFetch一次就向下读取一行,直到返回值为SQL_NO_DATA_FOUND的时候表示读到了最后
//是不是和C语言文件访问中EOF有点像。
? ? while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
? ? {
??TCHAR name[20]; //字符数组,SQLCHAR其实就是char的一个别名,所以和char name[20]一样。
??//调用SQLGetData来取列(Column)的内容
??//第一个参数就是代表SQL语句的hstmt、第二是要读取的列的序号(从1开始)
??//第三个是列的类型(SQL_C_CHAR字符串,在SQLExt.h中所有以SQL_C_开头的都是可选值)
??//第四个参数就是要接收的值的指针!!!
??//第五个是指针指向的缓冲区的大小
??//第六个不用管,那么调就行
? ?? ???SQLGetData(hstmt,1,SQL_C_CHAR,name,sizeof(name)/sizeof(SQLCHAR),cbsatid);
??MessageBox(hwnd,name,TEXT(),MB_OK);
? ? }
while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
? ? {
??SQLINTEGER i; //字符数组,SQLCHAR其实就是char的一个别名,所以和char name[20]一样。
??//调用SQLGetData来取列(Column)的内容
??//第一个参数就是代表SQL语句的hstmt、第二是要读取的列的序号(从1开始)
??//第三个是列的类型(SQL_C_CHAR字符串,在SQLExt.h中所有以SQL_C_开头的都是可选值)
??//第四个参数就是要接收的值的指针!!!
??//第五个是指针指向的缓冲区的大小
??//第六个不用管,那么调就行
? ?? ???SQLGetData(hstmt,2,SQL_C_LONG,i,sizeof(i),cbsatid);
??TCHAR name[20];
??SQLGetData(hstmt,1,SQL_C_CHAR,name,sizeof(name)/sizeof(TCHAR),cbsatid);
??TCHAR s[20];
??wsprintf(s,TEXT(%s年龄是:%d),name,i);
??
??MessageBox(hwnd,s,TEXT(),MB_OK);
? ? }
result = SQLPrepare(hstmt,(SQLCHAR*)select FUserName,FPassword from T_User,SQL_NTS);
CHECKDBSTMTERROR(hwnd,result,hstmt);
? ? result =SQLExecute(hstmt);
? ? CHECKDBSTMTERROR(hwnd,result,hstmt);
SQLINTEGER cbsatid=SQL_NTS;
TCHAR inputUserName[20];
GetDlgItemText(hwnd,IDC_EDITUSERNAME,inputUserName,sizeof(inp
文档评论(0)