当前位置:网站首页>c sqlite...
c sqlite...
2022-08-04 19:33:00 【Hong Dayu】
#define DATABASE "drurmu.db"
#define READ 0x1
#define WRITE 0x2
#define EXEC 0x0
#define VALUE 0x6
#define INT32 0x10
#define STR 0x20
int32_t sqlite3_open_database(sqlite3 **sqlite) {
int32_t ret = sqlite3_open(DATABASE, sqlite);
if (ret != SQLITE_OK) {
printf("[USER DEBUG] sqlite3-> %s \n", sqlite3_errstr(ret));
return ret;
}
return SQLITE_OK;
}
int32_t sqlite3_exec_sql(sqlite3 *sqlite, int32_t mode, const char *sql,
void *value, int32_t _s) {
sqlite3_stmt *stmt = NULL;
int32_t ret = sqlite3_prepare_v2(sqlite, sql, strlen(sql), &stmt, NULL);
if (ret != SQLITE_OK) {
printf("[USER DEBUG] sqlite3-> %s \n", sqlite3_errstr(ret));
return ret;
}
switch (mode & 0xF) {
case EXEC:
if (sqlite3_step(stmt) == SQLITE_OK) {
return SQLITE_OK;
}
case READ:
if (sqlite3_step(stmt) == SQLITE_ROW) {
if ((mode & 0xF0) == INT32) {
*(int32_t *)value = sqlite3_column_int(stmt, VALUE);
} else if ((mode & 0xF0) == STR) {
int32_t size = strlen((const char *)sqlite3_column_text(stmt, VALUE));
if (value == NULL && _s < size) {
sqlite3_finalize(stmt);
return -3;
}
memcpy((char *)value, sqlite3_column_text(stmt, VALUE), size);
}
} else {
sqlite3_finalize(stmt);
return -5;
}
sqlite3_finalize(stmt);
return SQLITE_OK;
case WRITE:
if (sqlite3_step(stmt) == SQLITE_OK) {
return SQLITE_OK;
} else {
return -2;
}
default:
return -1;
}
return SQLITE_OK;
}
int32_t main(void) {
sqlite3 *sqlite;
int32_t ret = sqlite3_open_database(&sqlite);
if (ret != SQLITE_OK) {
printf("[USER DEBUG] sqlite3 open database error-> %s\n",
sqlite3_errstr(ret));
return -1;
}
char select[] = "select * from rmu where ID=\'0x0007\'";
char str[255];
bzero(str, 255);
sqlite3_exec_sql(sqlite, READ | STR, select, (void *)str, 255);
printf("%s\n", str);
int32_t INT;
bzero(select, strlen(select));
sprintf(select, "select * from rmu where ID=\'0x0002\'");
sqlite3_exec_sql(sqlite, READ | INT32, select, (void *)&INT, 0);
printf("%d\n", INT);
char add[] = "insert into rmu VALUES(\'0x1234\','hello "
"world','RW','uint1',1,20,0,0,0,0)";
sqlite3_exec_sql(sqlite, WRITE, add, NULL, 0);
return 0;
}
边栏推荐
猜你喜欢
随机推荐
zynq 记录
Client Side Cache 和 Server Side Cache 的区别
一些性能测试的要点
STP实验
奥拉时钟芯片生成配置文件脚本
Spark提交参数说明和常见优化
小波提取特征的VQ实现
前3名突然变了,揭秘 7 月编程语言最新排行榜
Internship: changed the requirements
什么是内部客户服务?
Video Object Detection
红外图像滤波
如何推动乡村振兴的落地
VQ Realization of Wavelet Extraction Features
WPF 使用封装的 SharpDx 控件
T+Cloud:构建新型生意社交网络和营销关系的“智公司”
手把手教你CSP系列之script-src
TritonVM——基于Recursive STARK的虚拟机
Openharmony first experience (1)
如何理解 SAP UI5 的 sap.ui.define 函数