ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:18.86KB ,
资源ID:3260419      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3260419.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(sqlite3数据库c编程.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

sqlite3数据库c编程.docx

1、sqlite3数据库c编程linux c编程操作数据库(sqlite3应用) C/C+语言中调用 sqlite 的函数接口来实现对数据库的管理(创建数据库、创建表格、插入数据、查询、数据、删除数据等)。首先要编译好sqlite的库文件 : libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 pkgconfig可执行文件 : sqlite3本次测试: sqlite3的库文件目录是:/usr/local/lib 可执行文件 sqlite3 的目录是: /usr/local/bin 头文件 sqli

2、te3.h 的目录是: /usr/local/include用ls命令查看如下:rootlocalhost config# ls /usr/local/liblibclamav.a libclamunrar_iface.a libclamunrar.so libsqlite3.solibclamav.la libclamunrar_iface.la libclamunrar.so.5 libsqlite3.so.0libclamav.so libclamunrar_iface.so libclamunrar.so.5.0.3 libsqlite3.so.0.8.6libclamav.so.5

3、libclamunrar_iface.so.5 libmstring.so pkgconfiglibclamav.so.5.0.3 libclamunrar_iface.so.5.0.3 libsqlite3.alibclamunrar.a libclamunrar.la libsqlite3.la此目录下包含库文件: libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 pkgconfig开始sqlite编程: 1. 下面是一个C程序的例子,显示怎么使用 sqlite 的 C/C+ 接口. 数

4、据库的名字由第一个参数取得且第个参数或更多的参数是 SQL 执行语句. 这个函数调用sqlite3_open() 打开数据库,并且调用sqlite3_close() 关闭数据库连接。 程序一:opendbslite.c:view plain1. #include 2. #include 3. #include 4. intmain(void) 5. 6. sqlite3*db=NULL; 7. char*zErrMsg=0; 8. intrc; 9. 10. /打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 11. rc=sqlite3_open(zieckey.db,&db);

5、12. if(rc) 13. 14. fprintf(stderr,Cantopendatabase:%s/n,sqlite3_errmsg(db); 15. sqlite3_close(db); 16. exit(1); 17. 18. elseprintf(Youhaveopenedasqlite3databasenamedzieckey.dbsuccessfully!/nCongratulations!Havefun!-/n); 19. 20. sqlite3_close(db);/关闭数据库 21. return0; 22. 编译(问题):rootlocalhost liuxltest

6、# gcc -o opendbsqlite opendbsqlite.c/tmp/ccuquUQN.o: In function main:opendbsqlite.c:(.text+0x2e): undefined reference to sqlite3_openopendbsqlite.c:(.text+0x42): undefined reference to sqlite3_errmsgopendbsqlite.c:(.text+0x67): undefined reference to sqlite3_closeopendbsqlite.c:(.text+0x8a): undefi

7、ned reference to sqlite3_closecollect2: ld returned 1 exit status编译(解决):出现上述问题是因为没有找到库文件的问题。由于用到了用户自己的库文件,所用应该指明所用到的库,我们可以这样编译:rootlocalhost liuxltest# gcc -o opendbsqlite opendbsqlite.c -lsqlite3用 -lsqlite3 选项就可以了(前面我们生成的库文件是 libsqlite3.so.0.8.6 等,去掉前面的lib和后面的版本标志,就剩下 sqlite3 了所以是 -lsqlite3 )执行:roo

8、tlocalhost liuxltest# ./opendbsqliteYou have opened a sqlite3 database named zieckey.db successfully!Congratulations! Have fun ! -rootlocalhost liuxltest# 2. 插入 :insert 在C语言中向数据库插入数据:sqlite3_exec的函数原型说明如下:int sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be executed */ sq

9、lite_callback, /* Callback function */ void *, /* 1st argument to callback function */ char *errmsg /* Error msg written here */);程序二:insert.c:view plain1. #include 2. #include 3. #includesqlite3.h 4. #define_DEBUG_ 5. intmain(void) 6. 7. sqlite3*db=NULL; 8. char*zErrMsg=0; 9. intrc; 10. rc=sqlite3_

10、open(zieckey.db,&db);/打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 11. if(rc) 12. 13. fprintf(stderr,Cantopendatabase:%s/n,sqlite3_errmsg(db); 14. sqlite3_close(db); 15. exit(1); 16. 17. elseprintf(Youhaveopenedasqlite3databasenamedzieckey.dbsuccessfully!/nCongratulations!Havefun!-/n); 18. /创建一个表,如果该表存在,则不创建,并给出提示

11、信息,存储在zErrMsg中 19. char*sql=CREATETABLESensorData(/ 20. IDINTEGERPRIMARYKEY,/ 21. SensorIDINTEGER,/ 22. SiteNumINTEGER,/ 23. TimeVARCHAR(12),/ 24. SensorParameterREAL/ 25. ); 26. sqlite3_exec(db,sql,0,0,&zErrMsg); 27. #ifdef_DEBUG_ 28. printf(%s/n,zErrMsg); 29. #endif 30. /插入数据 31. char*sql1=INSERTI

12、NTO/SensorData/VALUES(NULL,1,1,200605011206,18.9); 32. sqlite3_exec(db,sql1,0,0,&zErrMsg); 33. char*sql2=INSERTINTO/SensorData/VALUES(NULL,1,1,200605011306,16.4); 34. sqlite3_exec(db,sql2,0,0,&zErrMsg); 35. sqlite3_close(db);/关闭数据库 36. return0; 37. 编译运行:rootlocalhost liuxltest# gcc -o insert insert.

13、c -lsqlite3rootlocalhost liuxltest# ./insertYou have opened a sqlite3 database named zieckey.db successfully!Congratulations! Have fun ! -(null)(null)(null)rootlocalhost liuxltest#查看是否插入数据:rootlocalhost liuxltest# /usr/local/bin/sqlite3 zieckey.db select * from SensorData 3. 查询: SELETE C语言中查询数据库中的数据

14、。 函数接口sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg ); 解释: int sqlite3_get_table(sqlite3*, const char *sql,char*result , int *nrow , int *ncolumn ,char *errmsg ); result中是以数组的形式存放你所查询的数据,首先是表名,再是数据。 nrow ,ncolumn分别为查询语句返回的结果集的行数,列数,没有查到结果时返回0程序三:query.c:view plain1. #include

15、2. #include 3. #includesqlite3.h 4. #define_DEBUG_ 5. intmain(void) 6. 7. sqlite3*db=NULL; 8. char*zErrMsg=0; 9. intrc; 10. 11. rc=sqlite3_open(zieckey.db,&db);/打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 12. if(rc) 13. 14. fprintf(stderr,Cantopendatabase:%s/n,sqlite3_errmsg(db); 15. sqlite3_close(db); 16. exit(1

16、); 17. 18. elseprintf(Youhaveopenedasqlite3databasenamedzieckey.dbsuccessfully!/nCongratulations!Havefun!-/n); 19. 20. /创建一个表,如果该表存在,则不创建,并给出提示信息,存储在zErrMsg中 21. char*sql=CREATETABLESensorData(/ 22. IDINTEGERPRIMARYKEY,/ 23. SensorIDINTEGER,/ 24. SiteNumINTEGER,/ 25. TimeVARCHAR(12),/ 26. SensorPara

17、meterREAL/ 27. ); 28. sqlite3_exec(db,sql,0,0,&zErrMsg); 29. #ifdef_DEBUG_ 30. printf(zErrMsg=%s/n,zErrMsg); 31. #endif 32. 33. /插入数据 34. sql=INSERTINTO/SensorData/VALUES(NULL,1,1,200605011206,18.9); 35. sqlite3_exec(db,sql,0,0,&zErrMsg); 36. 37. sql=INSERTINTO/SensorData/VALUES(NULL,1,1,20060501130

18、6,16.4); 38. sqlite3_exec(db,sql,0,0,&zErrMsg); 39. 40. 41. 42. intnrow=0,ncolumn=0; 43. char*azResult;/二维数组存放结果 44. /查询数据 45. /* 46. intsqlite3_get_table(sqlite3*,constchar*sql,char*result,int*nrow,int*ncolumn,char*errmsg); 47. result中是以数组的形式存放你所查询的数据,首先是表名,再是数据。 48. nrow,ncolumn分别为查询语句返回的结果集的行数,列数

19、,没有查到结果时返回0 49. */ 50. sql=SELECT*FROMSensorData; 51. sqlite3_get_table(db,sql,&azResult,&nrow,&ncolumn,&zErrMsg); 52. inti=0; 53. printf(row:%dcolumn=%d/n,nrow,ncolumn); 54. printf(/nTheresultofqueryingis:/n); 55. 56. for(i=0;i(nrow+1)*ncolumn;i+) 57. printf(azResult%d=%s/n,i,azResulti); 58. /释放掉az

20、Result的内存空间 59. sqlite3_free_table(azResult); 60. 61. #ifdef_DEBUG_ 62. printf(zErrMsg=%s/n,zErrMsg); 63. #endif 64. sqlite3_close(db);/关闭数据库 65. return0; 66. 67. 这里用到了一个查询的语句是 SELECT * FROM SensorData ,编译运行:rootlocalhost liuxltest# gcc -o query query.c -lsqlite3rootlocalhost liuxltest# ./queryYou h

21、ave opened a sqlite3 database named zieckey.db successfully!Congratulations! Have fun ! -zErrMsg = (null)row:2 column=5The result of querying is :azResult0 = IDazResult1 = SensorIDazResult2 = SiteNumazResult3 = TimeazResult4 = SensorParameterazResult5 = 1azResult6 = 1azResult7 = 1azResult8 = 2006050

22、11206azResult9 = 18.9azResult10 = 2azResult11 = 1azResult12 = 1azResult13 = 200605011306azResult14 = 16.4zErrMsg = (null)rootlocalhost liuxltest# 这里我们可以看到,azResult 的前面 5 个数据正好是我们的表 SensorData 的列属性,之后才是我们要查询的数据。所以我们的程序中才有 i( nrow + 1 ) * ncolumn 的判断条件: for( i=0 ; i( nrow + 1 ) * ncolumn ; i+ ) printf

23、( azResult%d = %s/n, i , azResulti ); 输出中有 zErrMsg = (null) 这样的字句,这是 zErrMsg 保留的错误信息,正如你所看到的,zErrMsg 为空,表明在执行过程中没有错误信息。4. 删除:delete C语言中删除数据库中的特定的数据。 程序四: delete.c:view plain1. #include 2. #include 3. #includesqlite3.h 4. #define_DEBUG_ 5. intmain(void) 6. 7. sqlite3*db=NULL; 8. char*zErrMsg=0; 9. i

24、ntrc; 10. 11. rc=sqlite3_open(zieckey.db,&db);/打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 12. if(rc) 13. 14. fprintf(stderr,Cantopendatabase:%s/n,sqlite3_errmsg(db); 15. sqlite3_close(db); 16. exit(1); 17. 18. elseprintf(Youhaveopenedasqlite3databasenamedzieckey.dbsuccessfully!/nCongratulations!Havefun!-/n); 19.

25、 20. /创建一个表,如果该表存在,则不创建,并给出提示信息,存储在zErrMsg中 21. char*sql=CREATETABLESensorData(/ 22. IDINTEGERPRIMARYKEY,/ 23. SensorIDINTEGER,/ 24. SiteNumINTEGER,/ 25. TimeVARCHAR(12),/ 26. SensorParameterREAL/ 27. ); 28. sqlite3_exec(db,sql,0,0,&zErrMsg); 29. #ifdef_DEBUG_ 30. printf(zErrMsg=%s/n,zErrMsg); 31. #endif 32. 33. /插入数据 34. sql=INSERTINTO/SensorData/VALUES(NULL,1,1,200605011206,18.9); 35. sqlite3_

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1