sqlite数据库C++操作入门实践

前端之家收集整理的这篇文章主要介绍了sqlite数据库C++操作入门实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基于以下原因,自己做个超级简单的测试,对于入门的人来说,应该有用:
官方文档总是不能一针见血(官网右上角搜索还总是搜不正确)
满大街互相转载的文章没几个能把下面那些细节用简洁明了的语言说清楚
代码实在没心情去啃,写个测试就能搞定

这里没有涵盖所有入门内容,见谅。
数据库表格:tttt
字段:1.id(自增INTEGER)2.intval(INTEGER)3.strval(TEXT)
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@H_403_165@ 67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include"sqlite3.h"
int _tmain( argc,_TCHAR*argv[])
{
sqlite3*db=NULL;
sqlite3_open_v2( "test.sqlite" ,&db,sqlITE_OPEN_READWRITE,NULL);
//执行下面代码前先手动清空数据库
#definetest1
#ifdeftest1
sqlite3_exec(db, "INSERTINTOtttt(intval,strval)VALUES(0,'abc')" //看下数据库,一定没问题,妥妥的2条数据
#endif
result=-1;
sqlite3_stmt*stmt=NULL;
#ifdeftest2
sqlite3_prepare(db,strval)VALUES(2,-1,&stmt,NULL);
result=sqlite3_step(stmt);
printf ( "%d\n" //sqlITE_DONE:101
result=sqlite3_step(stmt);
//sqlITE_DONE:101
sqlite3_finalize(stmt);
#endif
#defineBIND_IDX(STMT,NAME)sqlite3_bind_parameter_index(STMT,NAME)
#ifdeftest3
sqlite3_bind_int(stmt,BIND_IDX(stmt,monospace!important; font-size:1em!important; min-height:inherit!important; color:blue!important">"@intval" ),33);
result=sqlite3_step(stmt);
//sqlITE_DONE:101
result=sqlite3_step(stmt);
//sqlITE_DONE:101
sqlite3_finalize(stmt);
#endif
#ifdeftest4
result=sqlite3_step(stmt);
//sqlITE_DONE:101
//sqlite3_reset(stmt); //没有这句,表里会出现2条都是3的数据,也就是说下面这句没起作用
result=sqlite3_step(stmt);
//sqlITE_DONE:101
sqlite3_finalize(stmt);
//得出结论:一旦step过了之后,形成在stmt内部的<sql>将不变,sqlite3_reset之前<sql>不受任何bind语句干扰
#endif
#ifdeftest5
char str[4]={ 'a' 'b' 'c' '\0' };
//下面2句2选1
sqlite3_bind_text(stmt,monospace!important; font-size:1em!important; min-height:inherit!important; color:blue!important">"@strval" sqlITE_STATIC); //数据库里是'bbc'
//sqlite3_bind_text(stmt,"@strval"),sqlITE_TRANSIENT); //数据库里是'abc'
str[0]= ;
result=sqlite3_step(stmt);
//sqlITE_DONE:101
sqlite3_finalize(stmt);
//得出结论:sqlITE_STATIC就是给了个指针进去,而sqlITE_TRANSIENT是把指针指向的数据复制到了stmt内部
#endif
#ifdeftest6
//下面4句4选1
"begintransaction" //sqlite3_exec(db,"begin",NULL);
"committransaction" //正常插入1条数据
//得出结论:前面那个词正确就行了!
#endif
sqlite3_close(db);
getchar ();
return 0;
}

本文转载,未测试和实现,觉得不错就转了。

猜你在找的Sqlite相关文章