概述基于以下原因,自己做个超级简单的测试,对于
入门的人来说,应该有用: 官方文档总是不能一针见血(官网右上角搜索还总是搜不正确) 满大街互相转载的文章没几个能把下面那些细节用简洁明了的语言说清楚 源代码实在没心情去啃,写个测试就能搞定 这里没有涵盖所有入门内容,见谅。
数据库表格: tttt 字段: 1.id(自增INTEGER) 2.intval(INTEGER) 3.strval(TEXT)
基于以下原因,自己做个超级简单的测试,对于入门的人来说,应该有用: 官方文档总是不能一针见血(官网右上角搜索还总是搜不正确) 满大街互相转载的文章没几个能把下面那些细节用简洁明了的语言说清楚
源代码实在没心情去啃,写个测试就能搞定
这里没有涵盖所有入门内容,见谅。
数据库表格: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 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); @H_502_245@//执行下面代码前先手动清空数据库 #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' '}; ' //下面2句2选1 //数据库里是'bbc' sqlite3_bind_text(stmt,monospace!important; Font-size:1em!important; min-height:inherit!important; color:blue!important">"@strval" //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数据库C++ *** 作入门实践全部内容,希望文章能够帮你解决sqlite数据库C++ *** 作入门实践所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)