1. SQLite:SQLite是一个自足的、零配置的、事务型的SQL数据库引擎。它以其轻量、灵活和可嵌入性广泛应用于很多项目,特别是在移动应用中。
2. libpq:PostgreSQL的官方C语言客户端库。它提供了直接与PostgreSQL数据库进行交互的能力,具有高效的性能和丰富的特性,非常适合需要高级SQL查询的场合。
3. MySQL C API:MySQL数据库的C语言接口,提供了直接操作MySQL数据库的能力,适合需要高性能和稳定性的应用程序。
4. hiredis:适用于Redis的C语言客户端,虽然Redis本身并不是传统意义上的数据库,但是它的高性能和丰富的功能使其在数据存储与访问上成为一个流行选择。
5. libmongodb:MongoDB的C客户端库,适合需要使用文档存储方式的场合,特别是在非关系型数据库操作中表现出色。
#include
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));
return 1;
}
sqlite3_close(db);
return 0;
}
#include
#include
#include
int main() {
PGconn *conn = PQconnectdb("dbname=test user=postgres password=secret");
if (PQstatus(conn) != CONNECTION_OK) {
fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn));
PQfinish(conn);
return 1;
}
PQfinish(conn);
return 0;
}
#include
int main() {
MYSQL *conn;
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init() failed\n");
return EXIT_FAILURE;
}
if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed\n");
mysql_close(conn);
return EXIT_FAILURE;
}
mysql_close(conn);
return EXIT_SUCCESS;
}
#include
int main() {
redisContext *context = redisConnect("127.0.0.1", 6379);
if (context == NULL || context->err) {
if (context) {
fprintf(stderr, "Error: %s\n", context->errstr);
redisFree(context);
} else {
fprintf(stderr, "Can't allocate redis context\n");
}
return 1;
}
redisFree(context);
return 0;
}
#include
int main() {
mongoc_init();
mongoc_client_t *client = mongoc_client_new("mongodb://localhost:27017/");
mongoc_client_destroy(client);
mongoc_cleanup();
return 0;
}