该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用ODBC连SqlServer2008
百度上资料少啊,这个文件尖括号的应该是系统自带头文件吧,编译器报错找不到啊怎么办
有人遇到过这个问题吗
源码贴上
#include
#include
#include
#include
#include
#include
#include
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc1 = SQL_NULL_HDBC;
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
//#define SQL_MAX_DSN_LENGTH200
#define MAXNAME200
int main(void)
{
char id[200]="hr123";
char name[200]="mike.shao";
char tel[200]="1433455";
SQLINTEGER p;
RETCODE retcode;
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "csql";
UCHAR szUID[MAXNAME] = "sa";
UCHAR szAuthStr[MAXNAME] = "root";
//SQL语句
UCHAR pre_sql[200] = "insert into EMPLOYEE values(?,?,?)";
//1.连接数据源
//分配ODBC环境句柄
retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
//告诉ODBC这是一个3.0标准的应用程序
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
// 分配连接句柄并建立连接
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
retcode = SQLConnect(hdbc1, szDSN,(SWORD)strlen(szDSN), szUID, (SWORD)strlen(szUID), szAuthStr,(SWORD)strlen(szAuthStr));
//判断连接是否成功
if((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO)){
printf("连接失败!\n");
return -1;
}
printf("connect successful\n");
//2.创建并执行一条或多条SQL语句
/*
1.分配一个语句句柄(statement handle)
2.创建SQL语句
3.执行语句
4.销毁语句
*/
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
//绑定参数方式
p = SQL_NTS;
//1预编译
SQLPrepare(hstmt1,pre_sql,29); //第三个参数与数组大小相同,而不是数据库列相同
//2绑定参数值
SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&id,0,&p);
SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&name,0,&p);
SQLBindParameter(hstmt1,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&tel,0,&p);
retcode = SQLExecute(hstmt1);
if((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO)){
printf("SQLExecute error!\n");
}
//释放语句句柄
SQLDisconnect(hdbc1);
SQLCloseCursor (hstmt1);
SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
printf("ok\n");
return 0;
}