#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;
}
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: 服务器未启动、用户名密码错误、端口被防火墙阻挡、数据库名错误。