当前位置:数据库 > SQLite >>

C语言访问SQLite数据库报错

利用SQLite官方的sqlite3.h头文件和sqlite.c实现,添加到项目中。然后 #include <stdio.h> #include "sqlite3.h" 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; } int main(int argc, char **argv){ sqlite3 *db; char *zErrMsg = 0; int i; int rc; if(argc!=3){ fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); return(1); } rc = sqlite3_open(argv[1], &db); if( rc ){ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return(1); } rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } sqlite3_close(db); return 0; } VC++6.0中编译、链接都没问题,因为要输入参数,所以DOS命令下切到项目Debug目录下,运行:connSQLite d:\temp\test.db "select * from contact;" 总无法运行,事实上是调用sqlite3_open()时出的问题,但这个函数是官方提供的接口,所以不知道怎么办。 QQ:656117493
答案:我用sqlite3.7.10都没有任何问题,不过我没试过楼主直接用dos的这个方法。
另外就是自己做的lib文件要放倒lib文件夹里,sqlite3.dll文件要放到system32文件夹里,64位操作系统要放到syswow64文件夹里,这里要注意并不是每个版本的sqlite3.dll文件都适合自己的机器,我也是试了好多次才成功。
不知道能不能帮到你,刚才是我的全部理解了。

上一个:SQLite模糊匹配编码转换
下一个:在 linux shell下使用 sqlite3疑问

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,