7,713
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <sqlext.h> //这个应该是必须的, 链结时需要odbc32.lib
int main() {
SQLHENV henv = NULL; //环境句柄
SQLHDBC hdbc = NULL; //odbc连接句柄
SQLHSTMT hstmt = NULL; //语句句柄
SQLRETURN retcode;
SQLCHAR connout[256];
SQLSMALLINT connout_len;
SQLCHAR connstr[] = "Driver={Microsoft Access Driver (*.mdb)};Dbq=E:\\Room AC thermal dynamic calculation\\RTS Data File\\Envelope_Database.mdb;Uid=admin;Pwd=;CharSet=gbk;";
//分配环境
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
//设置环境属性
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
//分配链结
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//创建数据库链结
retcode = SQLDriverConnect(hdbc, NULL, connstr, SQL_NTS, connout, sizeof(connout), &connout_len, SQL_DRIVER_NOPROMPT);
//retcode = 0;
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
printf("connnect access ok!\n");
printf("%s\n", connout);
}
else {
printf("failure!\n");
}
}
#include <windows.h>
#include <sqlext.h> //这个应该是必须的, 链结时需要odbc32.lib
#include <stdio.h>
#include <stdlib.h>
void main()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
/*Allocate environment handle */
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
/* Set the ODBC version environment attribute */
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
/* Allocate connection handle */
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
/* Set login timeout to 5 seconds. */
SQLSetConnectAttr(hdbc, /*(void*)*/SQL_LOGIN_TIMEOUT, (void*)5, 0);
/* Connect to data source */
retcode =SQLConnect(hdbc, (SQLCHAR*) "Wall_PRF", SQL_NTS,(SQLCHAR*) "ABCD", SQL_NTS,(SQLCHAR*) "123456789", SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
/* Allocate statement handle */
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
printf("Connect Wall_PRF database success!\n");
retcode = SQLPrepare(hstmt, (SQLCHAR*)"select * from Wall_PRF where ID=1", SQL_NTS); //准备sql查询
retcode = SQLExecute(hstmt); //执行SQL命令
SQLINTEGER cbsatid = SQL_NTS;
while (SQLFetch(hstmt) != SQL_NO_DATA_FOUND) //循环从结果集中取每一行数据
{
SQLINTEGER id;
SQLDOUBLE PRF0;
SQLDOUBLE PRF1;
SQLCHAR Weight_Type[42];
SQLGetData(hstmt, 1, SQL_C_LONG, &id, sizeof(SQLINTEGER), &cbsatid);
SQLGetData(hstmt, 2, SQL_C_DOUBLE, &PRF0, sizeof(SQLINTEGER), &cbsatid);
SQLGetData(hstmt, 3, SQL_C_DOUBLE, &PRF1, sizeof(SQLINTEGER), &cbsatid);
SQLGetData(hstmt, 26, SQL_C_CHAR, Weight_Type, 10, &cbsatid);
printf("id is:%ld, PRF[0] is :%lf, PRF[1] is :%lf, Weight_Type is:%s\n", id, PRF0,PRF1, Weight_Type); //打印取得的值}
}
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
/* Process data */
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
}
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
system("pause");
}