C语言连接SQL数据库操作指南,如何实现C语言与SQL数据库的交互连接?

文章导读
#include <mysql.h>int main() { MYSQL *conn; conn = mysql_init(NULL); if (conn == NULL) { printf("Error creating MySQL connection structure"); return 1; } if (mysql_r
📋 目录
  1. 使用ODBC连接SQL Server
  2. MySQL C API基本操作
  3. SQLite嵌入式数据库连接
  4. PostgreSQL使用libpq
  5. FAQ
A A

#include <mysql.h>
int main() {
MYSQL *conn;
conn = mysql_init(NULL);
if (conn == NULL) {
printf("Error creating MySQL connection structure");
return 1;
}
if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL) {
printf("Error connecting to database: %s\n", mysql_error(conn));
mysql_close(conn);
return 1;
}
printf("Connected to database successfully!");
mysql_close(conn);
return 0;
}

使用ODBC连接SQL Server

首先需要安装Microsoft ODBC Driver for SQL Server。然后在代码中使用SQLConnect函数:
#include <sql.h>
#include <sqlext.h>
SQLHENV henv;
SQLHDBC hdbc;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLConnect(hdbc, (SQLCHAR*)"server_name", SQL_NTS, (SQLCHAR*)"user", SQL_NTS, (SQLCHAR*)"password", SQL_NTS);

MySQL C API基本操作

要使用MySQL C API,首先需要下载MySQL Connector/C并配置环境。在Visual Studio中设置包含目录和库目录。连接后执行查询:
char query[] = "SELECT * FROM users;";
if (mysql_query(conn, query) != 0) {
printf("Query failed: %s\n", mysql_error(conn));
} else {
MYSQL_RES *result = mysql_store_result(conn);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result)) != NULL) {
printf("%s\n", row[0]);
}
mysql_free_result(result);
}

SQLite嵌入式数据库连接

#include <sqlite3.h>
int main(int argc, char* argv[]) {
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if( rc ) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return(0);
} else {
fprintf(stderr, "Opened database successfully\n");
}
sqlite3_close(db);
return 0;
}

C语言连接SQL数据库操作指南,如何实现C语言与SQL数据库的交互连接?

PostgreSQL使用libpq

使用libpq库连接PostgreSQL:
#include <libpq-fe.h>
PGconn *conn = PQconnectdb("dbname=mydb user=myuser password=mypass host=localhost port=5432");
if (PQstatus(conn) == CONNECTION_BAD) {
fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
printf("Connected successfully!");

FAQ

Q: 如何编译MySQL C程序?
A: gcc program.c -o program `mysql_config --cflags --libs`

Q: C语言连接SQL Server需要什么驱动?
A: 需要安装ODBC Driver for SQL Server,并配置DSN。

Q: SQLite为什么不用服务器?
A: SQLite是嵌入式数据库,直接操作文件,无需服务器进程。

Q: 如何处理中文字符编码?
A: 设置数据库连接字符集为UTF8,如mysql_set_character_set(conn, "utf8");

Q: 连接失败常见原因?
A: 服务器未启动、用户名密码错误、端口被防火墙阻挡、数据库名错误。