新的第一次用vs2013搞 C++连接sqlite数据库,遇到了很多问题,我也不搞不懂~~~下面写点小体会
首先:
你要先配置好sqlite的环境
参考链接:
https://blog.csdn.net/ijinfu/article/details/68485273
https://www.cnblogs.com/chechen/p/7356010.html
配置好之后捏:
跟着写,跟着操作,结果运行出现了许多 不是找不到数据库 就是 no such table,我真的是 吃柠檬吧!!!
下面给上我的测试代码:
数据创建路径,这个是非常重要的,不然到时候读取不到~
随便在一个盘建个文件夹名字自己想 如 : D:sqlite
接着 cmd
进入到文件夹目录,可以开始创建数据库了
创建数据库命令 : sqlite3 数据库名字 如:sqlite3 test.db;
创建完数据就是建表了:
CREATE TABLE student( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), FEES REAL );
表格创建完毕,没有数据怎么办?当然是插入~
INSERT INTO student (ID,NAME,AGE,ADDRESS,FEES) VALUES (1, 'Maxsu', 27, 'Shengzhen', 20000.00); INSERT INTO student (ID,NAME,AGE,ADDRESS,FEES) VALUES (2, 'Minsu', 25, 'Beijing', 15000.00 ); INSERT INTO student (ID,NAME,AGE,ADDRESS,FEES) VALUES (3, 'Avgsu', 23, 'Shanghai', 2000.00 ); INSERT INTO student (ID,NAME,AGE,ADDRESS,FEES) VALUES (4, 'Linsu', 25, 'Guangzhou', 65000.00 ); INSERT INTO student (ID,NAME,AGE,ADDRESS,FEES) VALUES (5, 'Sqlsu', 26, 'Haikou', 25000.00 )
如图:
ok,接下来是代码部分~~(代码也是参考修改的)
#include "stdafx.h" #include "sqlite3.h" #include <iostream> using namespace std; sqlite3 * pDB = NULL; //查找 bool SelectUser(); int _tmain(int argc, _TCHAR* argv[]) { //打开路径采用utf-8编码 //如果路径中包含中文,需要进行编码转换
//路径非常重要,如果找不到,会自己创一个新的
int nRes = sqlite3_open("D:\sqlite\test.db", &pDB); if (nRes != SQLITE_OK) { cout << "Open database fail: " << sqlite3_errmsg(pDB); goto QUIT; } //查找 if (!SelectUser()) { goto QUIT; } QUIT: sqlite3_close(pDB); return 0; } static int UserResult(void *NotUsed, int argc, char **argv, char **azColName) { for (int i = 0; i < argc; i++) { cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << ", "; } cout << endl; return 0; } bool SelectUser() { char* cErrMsg; int res = sqlite3_exec(pDB, "select * from student;", UserResult, 0, &cErrMsg); if (res != SQLITE_OK) { cout << "select fail: " << cErrMsg << endl; return false; } return true; }
当然了你以为就成功了么 结果运行发现 不是找不到database 就是没发现table
怎么办?
先看看 有没有表:
没有student表
当然是再到命令窗口 继续建表和插入数据了
.open test.db; //打开一个数据库,没有会新建 .database; //查看数据库 .table //查看数据表 是否存在 select * from student; //查看数据
ok 再次创建完毕,运行
关于第一次没有找到表,我也不知道什么鬼,但是我确实有创建,而再次创建就出来了,有点搞不懂。。。有遇到这样的情况么 欢迎骚扰~~~~
如果你有更好的连接方法,欢迎留言,一起交流~~~·