当前位置:首页 > 行业动态 > 正文

c linux连接数据库连接

在C语言中,使用Linux系统连接数据库通常需要借助数据库提供的客户端库,比如MySQL的libmysqlclient库。以下是一个简单的示例代码,演示如何在C程序中连接到MySQL数据库:“ 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);

}

c linux连接数据库连接  第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进行编程,还需要注意安装相应的开发库、正确设置连接参数以及处理可能出现的错误情况。

0