在C语言中连接SQL Server并进行增删改查操作,我们可以使用ODBC(Open Database Connectivity)接口。
以下是一个简单的示例,假设已经安装了ODBC驱动和相关的SQL Server客户端工具。
然后将ODBC数据源配置为连接到SQL Server数据库。可以使用ODBC数据源管理器(ODBC Data Source Administrator)来完成这项任务。
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
#define SQL_RESULT_LEN 255
#define SQL_RETURN_CODE_LEN 1024
void show_error(unsigned int handletype, const SQLHANDLE& handle) {
SQLCHAR sqlstate[SQL_RETURN_CODE_LEN];
SQLCHAR message[SQL_RESULT_LEN];
if (SQL_SUCCESS == SQLGetDiagRec(handletype, handle, 1, sqlstate, NULL, message, SQL_RESULT_LEN, NULL)) {
printf("SQL Error: %s\n", message);
}
}
int main() {
// Declare handles and variables
SQLHENV henv;
SQLHDBC hdbc;
SQLRETURN retcode;
// Allocate environment handle
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
show_error(SQL_HANDLE_ENV, henv);
return 1;
}
// Set the ODBC version environment attribute
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
show_error(SQL_HANDLE_ENV, henv);
return 1;
}
// Allocate connection handle
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
show_error(SQL_HANDLE_ENV, henv);
show_error(SQL_HANDLE_DBC, hdbc);
return 1;
}
// Connect to the DSN
SQLCHAR* dsn = (SQLCHAR*)"YourDSN";
SQLCHAR* user = (SQLCHAR*)"YourUsername";
SQLCHAR* pass = (SQLCHAR*)"YourPassword";
retcode = SQLConnect(hdbc, dsn, SQL_NTS, user, SQL_NTS, pass, SQL_NTS);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
show_error(SQL_HANDLE_ENV, henv);
show_error(SQL_HANDLE_DBC, hdbc);
return 1;
}
// Perform SQL operations here
// ...
// Disconnect and free resources
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
在上面的示例中,需要替换YourDSN
、YourUsername
和YourPassword
为你的实际ODBC数据源、用户名和密码。此外,你需要在”Perform SQL operations here”的这里执行你的SQL查询、插入、更新或删除操作。使用SQL语句,可以通过SQLExecDirect
或SQLPrepare
和SQLExecute
执行SQL语句。
如果在实际应用中,需要添加适当的错误处理和释放资源的代码。