在C语言中,如果想连接SQL Server数据库,可以使用ODBC数据源方式实现。
使用ODBC连接数据库,简单来说,就是通过一个媒介,来连接数据库和程序代码。C语言中,使用ODBC连接SQL Server数据库可以分为以下两大步骤。
配置ODBC数据源的步骤如下:
(1)在Windows操作系统中,选择“开始”→“控制面板”,查看方式选择“小图标”,然后单击“管理工具”,将打开管理工具文件夹,如图1所示。
在管理工具的文件夹中,双击“数据源(ODBC)”图标,打开ODBC数据源管理器,如图2所示。
(2)在ODBC数据源管理器中,单击“添加”按钮,打开“创建新数据源”对话框,如图3所示。
(3)在“创建新数据源”对话框选择ODBC提供驱动程序的数据源,包括Access类驱动程序、dBase类驱动程序、Excel类驱动程序、FoxPro类驱动程序、Visual FoxPro类驱动程序、Paradox类驱动程序、Text类驱动程序、Oracle类驱动程序和SQL Server类驱动程序。本章主要介绍创建SQL Server的数据源,所以在驱动程序名称菜单中,选择“SQL Server Native Client 11.0”,单击“完成”按钮,如图4所示。
(4)随后打开“创建到SQL Server的新数据源”窗口。
✔ 在“名称”文本框内输入新的数据源名,例如csql。
✔ 在“描述”文本框内输入对数据源的描述,也可以为空。这里没有输入内容。
✔ 在“服务器”下拉列表框中选择需要连接的服务器,笔者选择“ZHOUJIAXING-PC\MRSQLSERVER”。
然后单击“下一步”按钮
(5)接下来选择SQL Server的登录验证方式,选择第二个单选框“使用用户输入登录ID和密码的SQL Server验证(S)”,然后输入登录ID和密码
✔ 在“登录ID”文本框中输入“sa”。
✔ 在“密码”文本框中输入密码,这个密码是安装SQL Server时设置的,如果为空,则不输入。
(6)单击“下一步”按钮,打开对话框。在此选中“更改默认的数据库为”复选框,同时在下拉列表框中选择需要的SQL Server数据库(例如选择mrkj),然后单击“下一步”按钮。
(7)在打开的对话框中使用默认选项,然后单击“完成”按钮,打开“ODBC Microsoft SQL Server 安装”对话框。单击“测试数据源”按钮,如果正确,则连接成功;如果不正确,系统会指出具体的错误,用户应该重新检查配置的内容是否正确
(8)单击“确定”按钮,新创建的数据源就会添加到如图9所示对话框中的数据源列表框中。此时在如图19.5对话框中单击“确定”按钮,一个新的SQL Server数据源就创建完成了。
至此,ODBC数据源csql就创建完成了,接下来就可以使用ODBC数据源进行数据库连接了。
通过C语言代码操作数据库,向mrkj数据库的class表中插入一条数据,代码如下。
01 #include <stdio.h>
02 #include <string.h>
03 #include <windows.h>
04 #include <sql.h>
05 #include <sqlext.h>
06 #include <sqltypes.h>
07 #include <odbcss.h>
08
09 SQLHENV henv = SQL_NULL_HENV;
10 SQLHDBC hdbc1 = SQL_NULL_HDBC;
11 SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
12
13 int main() {
14 RETCODE retcode;
15 UCHAR szDSN[SQL_MAX_DSN_LENGTH + 1] = "csql",
16 szUID[MAXNAME] = "sa",
17 szAuthStr[MAXNAME] = "111";
18 //SQL语句
19 UCHAR sql[200] = "insert into class values('C1707','一七级七班','刘梓平','52','数学系')";
20 //预编译SQL语句
21 UCHAR pre_sql[200] = "insert into class values(?,?,?,?,?)";
22 //连接数据源,设置环境句柄
23 retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
24 retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
25 (SQLPOINTER)SQL_OV_ODBC3,
26 SQL_IS_INTEGER);
27 //连接句柄
28 retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
29 retcode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr, 3);
30 //判断连接是否成功
31 if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO)) {
32 printf("连接失败!\n");
33 getchar();
34 }
35 else {
36 retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
37 //直接执行
38 SQLExecDirect(hstmt1,sql,200);
39 printf("操作成功!");
40 getchar();
41 //释放语句句柄
42 SQLCloseCursor(hstmt1);
43 SQLFreeHandle(SQL_HANDLE_STMT, hstmt1);
44
45 }
46 /*
47 1.断开与数据源的连接.
48 2.释放连接句柄.
49 3.释放环境句柄(如果不再需要在这个环境中作更多连接)
50 */
51 SQLDisconnect(hdbc1);
52 SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
53 SQLFreeHandle(SQL_HANDLE_ENV, henv);
54 return(0);
55 }
打开SQL Server数据库查询class数据表,显示已经向class表插入了一条数据。
Powered by 小羊羔外链网 8.3.11
©2015 - 2024 小羊羔外链网
您的IP:18.216.190.167,2024-04-24 04:19:47,Processed in 0.05334 second(s).