加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 20:12:16 所属栏目:百科 来源:网络整理
导读:基于以下原因,自己做个超级简单的测试,对于入门的人来说,应该有用: 官方文档总是不能一针见血(官网右上角搜索还总是搜不正确) 满大街互相转载的文章没几个能把下面那些细节用简洁明了的语言说清楚 源代码实在没心情去啃,写个测试就能搞定 这里没有涵盖
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 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#ifdeftest1sqlite3_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 ( "%dn" //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' '' }; //下面2句2选1 sqlite3_bind_text(stmt,monospace!important; font-size:1em!important; min-height:inherit!important; color:blue!important">"@strval" //数据库里是'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; }
本文转载,未测试和实现,觉得不错就转了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

基于以下原因,自己做个超级简单的测试,对于入门的人来说,应该有用:
官方文档总是不能一针见血(官网右上角搜索还总是搜不正确)
满大街互相转载的文章没几个能把下面那些细节用简洁明了的语言说清楚
源代码实在没心情去啃,写个测试就能搞定

这里没有涵盖所有入门内容,见谅。
数据库表格:tttt
字段:1.id(自增INTEGER)2.intval(INTEGER)3.strval(TEXT)
C/C++ code ?