//AI写的代码
int main() {
printf("SQLite版本: %s\n", sqlite3_libversion());
sqlite3* db;
int rc = sqlite3_open("message.db", &db); // 创建物理数据库文件
// sqlcipher需要设置加密密钥
// const char* key = "CreateSun";
// rc = sqlite3_key(db, key, strlen(key));
if (rc != SQLITE_OK) {
printf("打开数据库失败: %s\n", sqlite3_errmsg(db));
return 1;
}
printf("成功打开数据库\n");
// 创建消息表
const char* create_table_sql =
"CREATE TABLE IF NOT EXISTS message_table ("
"message_id INTEGER PRIMARY KEY AUTOINCREMENT,"
"server_id INTEGER DEFAULT 0 NOT NULL,"
"sequence INTEGER DEFAULT 0 NOT NULL,"
"sender_id INTEGER DEFAULT 0 NOT NULL,"
"conversation_id TEXT DEFAULT '' NOT NULL,"
"content_type INTEGER DEFAULT 0 NOT NULL,"
"send_time INTEGER DEFAULT 0 NOT NULL,"
"flag INTEGER DEFAULT 0 NOT NULL,"
"content TEXT,"
"devinfo INTEGER DEFAULT 0 NOT NULL,"
"from_app_id TEXT DEFAULT '' NOT NULL,"
"msg_from_devinfo INTEGER DEFAULT 0 NOT NULL,"
"extra_content TEXT,"
"local_extra_content TEXT,"
"client_id TEXT DEFAULT '',"
"local_extra_content_translate_info TEXT,"
"local_extra_content_time_nlp TEXT,"
"local_extra_content_approval_nlp TEXT);";
char* err_msg = 0;
rc = sqlite3_exec(db, create_table_sql, 0, 0, &err_msg);
if (rc != SQLITE_OK) {
printf("创建表失败: %s\n", err_msg);
sqlite3_free(err_msg);
} else {
printf("消息表创建成功\n");
}
// 插入几条聊天记录
time_t now = time(0);
const char* insert_sql[] = {
"INSERT INTO message_table (server_id, sequence, sender_id, conversation_id, "
"content_type, send_time, flag, content, devinfo, from_app_id, msg_from_devinfo) "
"VALUES (1001, 1, 10001, 'C_GROUP_123', 1, %ld, 0, "
"'CreateSun是最聪明的人!!!!!!!!!!!!!!!!!', 0, 'com.example.app', 0);",
"INSERT INTO message_table (server_id, sequence, sender_id, conversation_id, "
"content_type, send_time, flag, content, devinfo, from_app_id, msg_from_devinfo) "
"VALUES (1001, 2, 10002, 'C_GROUP_123', 1, %ld, 0, "
"'我也同意,CreateSun太厉害了!', 0, 'com.example.app', 0);",
"INSERT INTO message_table (server_id, sequence, sender_id, conversation_id, "
"content_type, send_time, flag, content, devinfo, from_app_id, msg_from_devinfo) "
"VALUES (1001, 3, 10003, 'C_GROUP_123', 1, %ld, 0, "
"'向CreateSun学习编程技巧', 0, 'com.example.app', 0);"
};
char sql_buffer[1024];
for (int i = 0; i < 3; i++) {
snprintf(sql_buffer, sizeof(sql_buffer), insert_sql[i], now + i);
rc = sqlite3_exec(db, sql_buffer, 0, 0, &err_msg);
if (rc != SQLITE_OK) {
printf("插入记录失败: %s\n", err_msg);
sqlite3_free(err_msg);
} else {
printf("成功插入记录 %d\n", i+1);
}
}
// 查询并打印所有记录
printf("\n数据库中的消息记录:\n");
const char* select_sql = "SELECT message_id, sender_id, content FROM message_table;";
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, select_sql, -1, &stmt, 0);
if (rc != SQLITE_OK) {
printf("查询准备失败: %s\n", sqlite3_errmsg(db));
} else {
while (sqlite3_step(stmt) == SQLITE_ROW) {
int mid = sqlite3_column_int(stmt, 0);
int sid = sqlite3_column_int(stmt, 1);
const char* content = (const char*)sqlite3_column_text(stmt, 2);
printf("[消息ID:%d] [发送者:%d] 内容: %s\n", mid, sid, content);
}
sqlite3_finalize(stmt);
}
sqlite3_close(db);
printf("\n数据库操作完成,数据已保存到 message.db 文件\n");
system("pause");
return 0;
}