Tag: sqlite

如何为SQLite执行增量备份?

我有一个程序将日志记录数据保存到SQLite3数据库。 我想在程序仍在运行时备份数据库。 我已经通过使用SQLite在线备份API( http://www.sqlite.org/backup.html )完成了这项工作并且工作正常,但是在备份完成之前它会滞后于进程… 有谁知道在SQLite中进行增量备份的方法? 我最好只在每次运行备份时备份新数据,而不是整个数据库。

为什么重新实现strlen作为循环+减法?

受到关于SQLite3的以下代码的这个问题的启发: static int strlen30(const char *z){ const char *z2 = z; while( *z2 ){ z2++; } return 0x3fffffff & (int)(z2 – z); } 这附带一条提交消息,说这个函数有助于int溢出。 我对这部分特别感兴趣: const char *z2 = z; while( *z2 ){ z2++; } 对我来说,这个循环前进到z2直到z2指向null终止符。 然后z2-z产生字符串长度。 为什么不对这部分使用strlen()并重写如下: return 0x3fffffff & (int)(strlen(z)); 为什么使用循环+减法而不是strlen() ? 什么可以循环+减法做什么strlen()不能?

SQLITE(C / C ++接口) – 如何提交事务

我正在使用sqlite c / c ++接口。 现在这是我的情景 – 我有3个表(相关表)说A,B,C。 现在,有一个名为Set的函数,它获取一些输入,并根据输入将行插入这三个表中。 (有时它可以是其中一个表中的更新) 现在我需要两件事。 一,我不想要自动提交function。 基本上我想在每1000次调用Set函数后提交 其次,在set函数本身内,如果我发现在插入两个表后,第三个插入失败,那么我必须还原,那个Set函数调用中的那些特定更改。 现在我没有看到任何sqlite3_commit函数暴露。 我只看到一个名为sqlite3_commit_hook()的函数,它在文档中略有差异。 为此目的是否有任何function? 或者实现这种行为的方法是什么? 你能帮助我做最好的方法吗? 此致,Arjun

sqlite3列类型

我正在开始一个必须将数据从XML转换为db的新项目。 XMLs具有自己的格式,不能用于填充db 。 我选择使用sqlite ,因为它是一个嵌入式平台,我需要一个轻量级的库。 我正在努力使用列类型。 我写了下面的sql: static int callback(void *NotUsed, int argc, char **argv, char **azColName) { int i; for(i=0; i<argc; i++){ printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } static bool exec_sql (sqlite3 *db, char *sql, bool use_callback) { int rc; char *zErrMsg = 0; // Execute […]

从哪里开始阅读SQLite源代码?

我想了解如何实现sqlite。 并且,想要阅读源代码(我已经下载了源代码)。 我应该开始考虑哪部分代码?

使用柠檬解析器(LALR)生成一个calulator,如何从表达式中获取param

我想从输入中得到参数。 例如: Input:12+10 。 运行我的计算器后。 我想得到12和10.我知道,我必须使用Parse(pParser, hTokenID, sTokenData, pArg);的第四个参数Parse(pParser, hTokenID, sTokenData, pArg); ,但是怎么样? parser.y : %syntax_error{fprintf(stderr, “Syntax error\n”);} %left PLUS MINUS. %left TIMES DIVIDE. program ::= expr(A).{printf(“Result = %d\n”, A);} expr(A) ::= expr(B) PLUS expr(C).{A = B + C; } expr(A) ::= expr(B) MINUS expr(C). {A = B – C; } expr(A) ::= expr(B) TIMES […]

从SQLite获取int值

我听说使用sqlite3_prepare_v2而不是sqlite_exec从数据库中获取整数,但我找不到任何示例。 这个页面也没有帮助。 现在我从数据库中获取字符串,所以我需要用atoi解析它们,这似乎是缓慢而无效的。 在SO上有很多类似的问题,但它们是关于obj-c和iOS SDK的。 我需要C / C ++提示或示例。 提前致谢。

不知道如何获取数据库?

我是sqlite和gtk的初学者。 我正在使用code :: blocks创建我的第一个项目。 我在获取数据库时遇到问题,我的代码是: #include #include #include #include “sqlite3.c” #include static int callback(void *data, int argc, char **argv, char **azColName){ int i; fprintf(stderr, “%s: “, (const char*)data); for(i=0; i1) fprintf(stdout, “Dulitcate user\n”); if(count<1) fprintf(stdout, "username and password is not correct\n"); } /* Execute SQL statement */ rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg); if( […]

sqlite3 c / c ++,获取聚合查询所涉及的表名

我在C ++项目中使用sqlite,我希望能够获得查询中涉及的表名。 例如: SELECT * FROM Employee 应该返回Employee 现在我成功使用qlite3_column_table_name ( doc )进行此类查询,但对于聚合查询,该函数返回null,因为结果不直接属于表。 例如: SELECT SUM(salary) AS total FROM Employee 当然,当sqlite编译语句时,“Employee”关键字被识别为表。 你知道aby的方式来访问这个吗? 我试图通过解析器的代码没有成功…

是否需要删除指针从sqlite3_column_blob()方法获取?

像这样:const void * test = sqlite3_column_blob(stat,1); 我可以删除或删除[]测试吗?