BastEt 阅读(3234) 评论(1)
freetds下有几个工程,最易用的可能是那个odbc接口的那个,下面是普通的odbc方法
链接的时候要把缺省的那两个odbc库给去掉,链接到tds的odbc_release下的那个库,
要注意编译tds的时候有个TDS722什么的,这样在连接的时候会使用702协议,有的老协议就使用不了的。(\freetds-0.91\include\tds.h)加上 #define TDS72 1
HENV odbc_env=NULL;
HDBC odbc_conn=NULL;
SQLAllocEnv(&odbc_env);
SQLAllocConnect(odbc_env,&odbc_conn);

char sqlconnstr[256];
//这里一定是Server=???而不是DSN
sprintf(sqlconnstr, "Server=%s;UID=%s;PWD=%s;DATABASE=%s;", "自己填", "自己填", "自己填","");
SQLSMALLINT rc=SQLConnect(odbc_conn,(SQLCHAR *)"210.51.26.239",SQL_NTS,(SQLCHAR *)"SIGNIN_HTQUOTATION2",SQL_NTS,(SQLCHAR *)"lhtK*6q+B->%f-",SQL_NTS);

char tmp[1024];
SQLSMALLINT len;
SQLSMALLINT rc=SQLDriverConnect(odbc_conn,NULL,(SQLCHAR *)sqlconnstr,SQL_NTS,(SQLCHAR *) tmp, sizeof(tmp), &len, SQL_DRIVER_NOPROMPT);

HSTMT odbc_stmt=NULL;
SQLAllocStmt(odbc_conn,&odbc_stmt);
rc=SQLExecDirect(odbc_stmt,(SQLCHAR *)"select * from clients",SQL_NTS);
for (rc=SQLFetch(odbc_stmt); rc == SQL_SUCCESS; rc=SQLFetch(odbc_stmt))
{
char buf[256];
SQLLEN retlen=256;
SQLGetData(odbc_stmt,1,SQL_C_CHAR,buf,sizeof(buf),&retlen);

__int64 uid=0;
retlen=sizeof(retlen);
SQLGetData(odbc_stmt,2,SQL_C_SBIGINT,&uid,sizeof(uid),&retlen);

}
SQLFreeStmt(odbc_stmt,SQL_DROP);

SQLDisconnect(odbc_conn);
SQLFreeConnect(odbc_conn);
SQLFreeEnv(odbc_env);

评论列表
amber
windows 下怎么安装配置freetds?网上找了很久都只是针对Linux的

发表评论
切换编辑模式