写一串C语言代码进行数据库应用开发
时间: 2024-10-28 14:11:12 浏览: 10
在C语言中,直接进行数据库操作通常会涉及到系统调用或使用专门的数据库API,如SQLite、MySQL C API等。下面是一个简单的例子,展示如何使用SQLite库连接到数据库并执行基本查询:
```c
#include <stdio.h>
#include <sqlite3.h>
// 数据库函数原型
int callback(void *data, int argc, char **argv, char **azColName);
static int open_database(sqlite3 **db);
static void close_database(sqlite3 *db);
int main() {
sqlite3 *db;
char *zErrMsg = 0;
int rc;
// 打开数据库连接
if (open_database(&db)) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return(0);
}
// 创建表 (如果不存在)
const char *sql_create_table = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)";
rc = sqlite3_exec(db, sql_create_table, callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
printf("Table created successfully\n");
}
// 插入数据
const char *sql_insert_data = "INSERT INTO users (name) VALUES ('John Doe')";
rc = sqlite3_exec(db, sql_insert_data, callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
printf("Data inserted successfully\n");
}
// 查询数据
const char *sql_query = "SELECT * FROM users";
rc = sqlite3_exec(db, sql_query, callback, 0, &zErrMsg);
if (rc == SQLITE_OK) {
printf("Query result:\n");
} else {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
close_database(db);
return 0;
}
// 打开数据库
static int open_database(sqlite3 **db) {
*db = sqlite3_open("test.db", 0);
if (*db == NULL) {
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(*db));
return 1;
}
return 0;
}
// 关闭数据库
static void close_database(sqlite3 *db) {
if (db) {
sqlite3_close(db);
}
}
```
这个示例展示了连接SQLite数据库,创建表,插入数据以及查询数据的基本流程。请注意,实际应用中需要处理错误和异常,并且在生产环境中推荐使用预编译的SQL语句。
阅读全文