您的位置:首页 > 编程语言

odbc配置和连接代码

2013-09-24 17:16 239 查看
使用c语言通过odbc 连接数据库,其中的配置操作相当的麻烦,之前不接触数据库编程的,当时想想无非就是存储数据而已。 现在想想,也还是存储数据。

第一步数据源配置,在所有程序-> 管理工具->数据源(odbc) 。 也可以在控制面板下面找到管理工具这一项。

说道配置,真的说来话长。

使用的是 sql server 2005 express 版本,精简,免费,最重要的原因是pc上已经安装了此版本。

因为太过精简的原因,连一些基本的配置工具都没有,后来还是要到官网上去下载配置工具 SQLServer2005_SSMSEE.msi 。 通过这个工具用窗口的方式连接到数据库。

参考的配置文档,个人感觉这篇比较全面些 http://hi.baidu.com/zhangqijun/item/45e166ab657d691fa8cfb7ea




这里第二副图 你想连接的是哪个 SQL Server,看了好些文档都说是 local。 反正我这里是不行。偶然间不知道在哪里看到,填的是第一幅图中框起来的那一串。 至于这一串是怎么生成的,不知道。 反正代表的是连接的服务器。 将此数据源命名为myfeeling, 然后在代码编辑中连接的,也就是这个数据源了。 测试中证实确实如此。

唉,反正是看了多篇文档才给胡整出来的,期间还有许多配置,被省略去。

#include <stdio.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <odbcss.h>

int main(){

// 环境句柄
SQLHENV henv ;
// 连接句柄
SQLHDBC hdbcl ;
// 语句句柄
SQLHSTMT hstmt ;
// 返回值
SQLRETURN retcode;

UCHAR szDSN[SQL_MAX_DSN_LENGTH+1]="myfeeling", szUID[MAXNAME]="sa",szAuthStr[MAXNAME]="9527";
UCHAR sql[40]="insert into Student values('aaa','100')";
UCHAR pre_sql[29]="insert int test values(?,?)";

retcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if((retcode!=SQL_SUCCESS)&&(retcode!=SQL_SUCCESS_WITH_INFO))
{
printf("环境句柄失败!\n");
return 0;
}
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);

retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbcl);
if ((retcode != SQL_SUCCESS )&&( retcode != SQL_SUCCESS_WITH_INFO))
{
printf("连接句柄失败!\n");
return 0;
}
retcode = SQLConnect(hdbcl,szDSN,26,szUID,2,szAuthStr,6);
if ((retcode != SQL_SUCCESS)&&(retcode != SQL_SUCCESS_WITH_INFO))
{
printf("连接数据源失败");
return 0;
}

retcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbcl,&hstmt);
if ((retcode != SQL_SUCCESS)&&(retcode != SQL_SUCCESS_WITH_INFO))
{
printf("语句句柄失败");
return 0;
}

retcode = SQLExecDirect(hstmt,sql,40);
SQLDisconnect(hdbcl);
SQLFreeHandle(SQL_HANDLE_DBC,hdbcl);
SQLFreeHandle(SQL_HANDLE_ENV,henv);
return 0;
}


贴上最后的代码,看别人的代码也是糊里糊涂的,不过还是连接上了。

没什么营养,做个小记。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: