c linux连接数据库连接
- 行业动态
- 2025-02-27
- 8
c,#include,#include,#includeint main() {, MYSQL *conn;, MYSQL_RES *res;, MYSQL_ROW row; // 初始化连接句柄, conn = mysql_init(NULL);, if (conn == NULL) {, fprintf(stderr, "%s,", mysql_error(conn));, exit(1);, } // 连接到数据库, if (mysql_real_connect(conn, "localhost", "username", "password", "database_name", 0, NULL, 0) == NULL) {, fprintf(stderr, "%s,", mysql_error(conn));, mysql_close(conn);, exit(1);, } // 执行查询, if (mysql_query(conn, "SELECT * FROM table_name")) {, fprintf(stderr, "%s,", mysql_error(conn));, mysql_close(conn);, exit(1);, } // 处理结果集, res = mysql_store_result(conn);, while ((row = mysql_fetch_row(res)) != NULL) {, printf("%s ,", row[0]); // 假设第一列是我们要的数据, } // 释放资源, mysql_free_result(res);, mysql_close(conn); return 0;,},
`
这段代码展示了如何初始化一个MySQL连接,连接到本地数据库,执行一个简单的查询,并打印结果。请确保在实际使用时替换
“localhost”
、
“username”
、
“password”
、
“database_name”
和
“table_name”
为实际的值。还需要确保已经安装了MySQL开发库,并在编译时链接对应的库文件(通常是
-lmysqlclient`)。
在Linux环境下使用C语言连接数据库,通常需要借助一些数据库驱动库来与不同的数据库进行通信,以下是几种常见数据库的连接方法:
1、MySQL/MariaDB
安装开发库:
对于Ubuntu/Debian系统,使用命令sudo apt-get install libmysqlclient-dev
。
对于CentOS/RHEL系统,使用命令sudo yum install mysql-devel
。
示例代码:
“`c
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
const char *server = "localhost";
const char *user = "your_username";
const char *password = "your_password";
const char *database = "your_database";
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s
", mysql_error(conn));
exit(1);
}
if (mysql_query(conn, "SELECT * FROM your_table")) {
fprintf(stderr, "%s
", mysql_error(conn));
exit(1);
}
res = mysql_store_result(conn);
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s
", row[0]);
mysql_free_result(res);
mysql_close(conn);
return 0;
}
编译代码:gcc -o mysql_example mysql_example.c $(mysql_config --cflags --libs)
。 2、PostgreSQL安装开发库: 对于Ubuntu/Debian系统,使用命令sudo apt-get install libpq-dev
。 对于CentOS/RHEL系统,使用命令sudo yum install postgresql-devel
。示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> int main() { PGconn *conn = PQconnectdb("user=your_username dbname=your_database password=your_password"); if (PQstatus(conn) == CONNECTION_BAD) { fprintf(stderr, "Connection to database failed: %s ", PQerrorMessage(conn)); PQfinish(conn); exit(1); } PGresult *res = PQexec(conn, "SELECT * FROM your_table"); if (PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr, "SELECT failed: %s ", PQerrorMessage(conn)); PQclear(res); PQfinish(conn); exit(1); } int rows = PQntuples(res); for (int i = 0; i < rows; i++) printf("%s ", PQgetvalue(res, i, 0)); PQclear(res); PQfinish(conn); return 0; }
编译代码:gcc -o postgres_example postgres_example.c -lpq
。
3、SQLite
安装开发库:
对于Ubuntu/Debian系统,使用命令sudo apt-get install libsqlite3-dev
。
对于CentOS/RHEL系统,使用命令sudo yum install sqlite-devel
。
示例代码:
“`c
#include <sqlite3.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
sqlite3 *db;
char *err_msg = 0;
int rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s
", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
char *sql = "CREATE TABLE Students(Id INT, Name TEXT);"
"INSERT INTO Students VALUES(1, ‘Alice’);"
"INSERT INTO Students VALUES(2, ‘Bob’);";
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK ) {
fprintf(stderr, "SQL error: %s
", err_msg);
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
sqlite3_close(db);
return 0;
}
编译代码:gcc -o sqlite_example sqlite_example.c -lsqlite3
。 4、ODBC(通用数据库连接)安装ODBC开发包:具体安装方法可能因不同的Linux发行版而有所不同,一般可以通过包管理工具进行安装,例如在Ubuntu系统中可以使用sudo apt-get install unixodbc unixodbc-dev
等命令进行安装。示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <sql.h> #include <sqlext.h> int main() { SQLHENV env; SQLHDBC dbc; SQLHSTMT stmt; SQLRETURN ret; /* ODBC API return status */ SQLINTEGER nativeError; SQLCHAR sqlState[6], messageText[256]; SQLSMALLINT textLength; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); SQLConnect(dbc, (SQLCHAR*)"DSN=YourDSN;UID=your_username;PWD=your_password;", SQL_NTS, NULL, 0); if (SQL_SUCCEEDED(ret)) { SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); SQLExecDirect(stmt, (SQLCHAR*)"SELECT * FROM your_table", SQL_NTS); SQLFetch(stmt); SQLGetData(stmt, 1, SQL_C_CHAR, messageText, sizeof(messageText), NULL); printf("%s ", messageText); } else { SQLGetDiagRec(SQL_HANDLE_DBC, dbc, 1, sqlState, &nativeError, messageText, sizeof(messageText), &textLength); printf("Error connecting to the database: %s ", messageText); } SQLFreeHandle(SQL_HANDLE_STMT, stmt); SQLDisconnect(dbc); SQLFreeHandle(SQL_HANDLE_DBC, dbc); SQLFreeHandle(SQL_HANDLE_ENV, env); return 0; }
编译代码:gcc -o odbc_example odbc_example.c -lodbc
。
在Linux环境下使用C语言连接数据库,需要根据具体的数据库类型选择合适的驱动库和API进行编程,还需要注意安装相应的开发库、正确设置连接参数以及处理可能出现的错误情况。