注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨启示录

欢迎光临我的网店优优我心:http://uumyheart.taobao.com

 
 
 

日志

 
 

VC++:VC++连接数据库模板及可能出现的问题  

2010-08-22 16:57:57|  分类: C语言学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
void DBTest(HWND hwnd)
{
 SQLHENV henv = NULL;
 SQLHDBC hdbc = NULL;   //数据库连接句柄
 SQLHSTMT hstmt = NULL; //代表一个SQL语句
 SQLRETURN result;
 
/**********************************************************************************************/
 //ODBC中SQLCHAR 就是字符串char的别称
 //NOTE: ConnStrIn里每一个赋值语句 “=”两遍都不能有空格
 SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=127.0.0.1; UID=root; PWD=webdev; DATABASE=db5; CharSet=gb2312;";
/**********************************************************************************************/

 SQLCHAR ConnStrOut[MAXBUFLEN];

 //分配环境句柄
 result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
 //设置管理环境属性
 result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
 //分配连接句柄
 result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
 //设置连接属性
 result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)LOGIN_TIMEOUT, 0);
 //连接数据库
 result = SQLDriverConnect( hdbc,NULL,
       ConnStrIn,SQL_NTS,
       ConnStrOut,MAXBUFLEN,
       (SQLSMALLINT *)0,SQL_DRIVER_NOPROMPT);
 if(SQL_ERROR==result)
 {
  ShowDBConnError(hwnd,hdbc);
  return;
 }
 //初始化语句句柄
 result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
 //SQL_NTS telling the function the previous parameter is Null-Terminated String,
 //please alculate the string length for me  
 //创建SQL语句
 result = SQLPrepare(hstmt,(SQLCHAR*)"insert into test (id,age) values(3,20)",SQL_NTS);
 CHECKDBSTMTERROR(hwnd,result,hstmt);
 //执行SQL语句
 result =SQLExecute(hstmt);
 CHECKDBSTMTERROR(hwnd,result,hstmt);
 //释放SQL语句
 SQLFreeStmt(hstmt,SQL_CLOSE);
 //断开连接
 SQLDisconnect(hdbc);
 SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
 SQLFreeHandle(SQL_HANDLE_ENV,henv);
 MessageBox(hwnd,TEXT("执行成功"),TEXT("标题"),MB_OK);
}
 
笔者按:容易出问题的地方我已经用红色字体显示了,也是刚才困扰我半天的问题。
我想让代码规范点,所以将“SERVER=127.0.0.1” 等 就写成了“SERVER   =  127.0.0.1”
没想到会报没有这个host错误。
后来发现这些赋值语句的“=”两遍不能有空格。
哎,杯具,望读者切忌:编写代码的规则不一定适合于所有的C语句。
哈哈
  评论这张
 
阅读(576)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017