c语⾔连接mysql的接⼝odbc_C语⾔+ODBC+SQL连接
第⼀步:配置ODBC。
①、在控制⾯板到ODBC,或者在控制⾯板上搜索ODBC。如图:
②、点击ODBC的添加按钮,选择SQL Server,这是会出现创建SQL Server的新数据源的对话框,我以phonesql为名建⽴名称,选择SQL 登陆的服务器,再点击下⼀步,选择登陆⽅式:⽹络登陆、⽤户输⼊登陆,任选(我选择⽤户输⼊登陆,以:⽤户名sa 密码123456为例)。
③、选择数据库test(我在SQL⾥⾯建的test),然后⼀直点下⼀步。最后点测试数据源。最后显⽰测试成功。
这样ODBC就建⽴好了,接下来的⼯作就是连接数据库了。第⼆步:建⽴数据库的表和添加数据。
CREATE TABLE [dbo].[worker](
[num] [int] NOT NULL,
[name] [char](20) NOT NULL,
[sex] [char](10) NOT NULL,
[age] [int] NOT NULL,
[shenfennum] [char](20) NOT NULL,
[xueli] [char](10) NOT NULL,
[mianmao] [char](10) NOT NULL,
[mima] [char](20) NOT NULL,
[quanxian] [char](10) NOT NULL,
[born] [char](20) NOT NULL) ON [PRIMARY]
第三步:使⽤VC++访问数据库。 ①、引⽤头⽂件
#include
#include
#include
#include
#include
解释:1. SQLINTEGER 定义⼀个整型变量,相当于C语⾔中的int。
2. SQLCHAR 定义⼀个字符变量,相当于C语⾔中的char.
3. ret=SQLConnect(hdbc,(SQLCHAR*)"phonesql",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"123456",SQL_NTS);//连接数据库
phonesql是建⽴的odbc的数据源,sa是⽤户名,123456是密码
代码如下:
#include
#include
#include
#include
#include
#include
SQLINTEGER num1,age1;
SQLCHAR name1[20],sex1[10],shenfennum1[20],xueli1[10],mianmao1[10],mima1[20],quanxian1[10],born1[20];
SQLINTEGER
mysql下载odbc失败len_num1,len_name1,len_sex1,len_shenfennum1,len_xueli1,len_age1,len_mianmao1,len_born1,len_mima1,len_quanxian1;
void fuzhi()
{
SQLRETURN ret;
SQLHENV henv;//SQLHANDLE henv
SQLHDBC hdbc;//SQLHANDLE hdbc
SQLHSTMT hstmt;//SQLHANDLE hstmt
ret=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);//申请环境句柄
ret=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);//设置环境属性
ret=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);//申请数据库连接句柄
ret=SQLConnect(hdbc,(SQLCHAR*)"phonesql",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"123456",SQL_NTS);//连接数据库
if(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){
ret=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);//申请SQL语句句柄
SQLCHAR sql[]="SELECT *FROM worker";
ret=SQLExecDirect(hstmt,sql,SQL_NTS);//直接执⾏SQL语句
if(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){
int i=0;
while(SQLFetch(hstmt)!=SQL_NO_DATA){//遍历结果集
/*****************************************数据库整型赋值*******************************/
SQLGetData(hstmt,1,SQL_C_ULONG,&num1,0,&len_num1);
/************************************************************************************/
SQLGetData(hstmt,2,SQL_C_CHAR,name1,20,&len_name1);
SQLGetData(hstmt,3,SQL_C_CHAR,sex1,10,&len_sex1);
SQLGetData(hstmt,4,SQL_C_ULONG,&age1,0,&len_age1);
SQLGetData(hstmt,5,SQL_C_CHAR,shenfennum1,20,&len_shenfennum1);
SQLGetData(hstmt,6,SQL_C_CHAR,xueli1,10,&len_xueli1);
SQLGetData(hstmt,7,SQL_C_CHAR,mianmao1,10,&len_mianmao1);
SQLGetData(hstmt,8,SQL_C_CHAR,mima1,20,&len_mima1);
SQLGetData(hstmt,9,SQL_C_CHAR,quanxian1,10,&len_quanxian1);
SQLGetData(hstmt,10,SQL_C_CHAR,born1,10,&len_born1);
printf("%d %s %s %d %s %s %s %s %s
%s\n",num1,name1,sex1,age1,shenfennum1,xueli1,mianmao1,mima1,quanxian1,born1);
}
SQLSMALLINT number_column;
ret=SQLNumResultCols(hstmt,&number_column);//查询结果集列数
if(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO)
printf("结果集共有%d列\n",number_column);
else printf("查询结果集列数失败!\n");
SQLINTEGER number_row;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论