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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

sql3学习.docx

1、sql3学习 linuxc编程操作数据库(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 头文件 sqlite3.h 的

2、目录是: /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 libclam

3、unrar_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 plaincopy to clipboardprint?#include #include #include int main( void )sqlite3 *db=NULL;char *zErrMsg = 0;int rc;/打开指定的数据库文件,如果不存在将创建一个同名的数据库文件rc = sqlite3_open(zieckey.db, &db);if( rc ) fprin

5、tf(stderr, Cant open database: %sn, sqlite3_errmsg(db); sqlite3_close(db); exit(1);else printf(You have opened a sqlite3 database named zieckey.db successfully!nCongratulations! Have fun ! - n);sqlite3_close(db); /关闭数据库return 0;#include #include #include int main( void )sqlite3 *db=NULL;char *zErrMs

6、g = 0;int rc;/打开指定的数据库文件,如果不存在将创建一个同名的数据库文件rc = sqlite3_open(zieckey.db, &db);if( rc ) fprintf(stderr, Cant open database: %sn, sqlite3_errmsg(db); sqlite3_close(db); exit(1);else printf(You have opened a sqlite3 database named zieckey.db successfully!nCongratulations! Have fun ! - n);sqlite3_close(

7、db); /关闭数据库return 0;编译(问题):rootlocalhost liuxltest# 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 t

8、o sqlite3_closeopendbsqlite.c:(.text+0x8a): undefined reference to sqlite3_closecollect2: ld returned 1 exit status编译(解决):出现上述问题是因为没有找到库文件的问题。由于用到了用户自己的库文件,所用应该指明所用到的库,我们可以这样编译:rootlocalhost liuxltest# gcc -o opendbsqlite opendbsqlite.c -lsqlite3用 -lsqlite3 选项就可以了(前面我们生成的库文件是 libsqlite3.so.0.8.6 等,去

9、掉前面的lib和后面的版本标志,就剩下 sqlite3 了所以是 -lsqlite3 )执行:rootlocalhost 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*, const char *sql,

10、sqlite_callback, void *, char *errmsg);程序二:insert.c:view plaincopy to clipboardprint?#include #include #include sqlite3.h#define _DEBUG_int main( void )sqlite3 *db=NULL;char *zErrMsg = 0;int rc;rc = sqlite3_open(zieckey.db, &db); /打开指定的数据库文件,如果不存在将创建一个同名的数据库文件if( rc ) fprintf(stderr, Cant open datab

11、ase: %sn, sqlite3_errmsg(db); sqlite3_close(db); exit(1);else printf(You have opened a sqlite3 database named zieckey.db successfully!nCongratulations! Have fun ! - n);/创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中char *sql = CREATE TABLE SensorData( ID INTEGER PRIMARY KEY, SensorID INTEGER, SiteNum INTEG

12、ER, Time VARCHAR(12), SensorParameter REAL ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );#ifdef _DEBUG_ printf(%sn,zErrMsg);#endif/插入数据char* sql1 = INSERT INTO SensorData VALUES( NULL , 1 , 1 , 200605011206, 18.9 ); ;sqlite3_exec( db , sql1 , 0 , 0 , &zErrMsg );char* sql2 = INSERT INTO SensorData

13、VALUES( NULL , 1 , 1 , 200605011306, 16.4 ); ;sqlite3_exec( db , sql2 , 0 , 0 , &zErrMsg );sqlite3_close(db); /关闭数据库return 0;#include #include #include sqlite3.h#define _DEBUG_int main( void )sqlite3 *db=NULL;char *zErrMsg = 0;int rc;rc = sqlite3_open(zieckey.db, &db); /打开指定的数据库文件,如果不存在将创建一个同名的数据库文件

14、if( rc ) fprintf(stderr, Cant open database: %sn, sqlite3_errmsg(db); sqlite3_close(db); exit(1);else printf(You have opened a sqlite3 database named zieckey.db successfully!nCongratulations! Have fun ! - n);/创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中char *sql = CREATE TABLE SensorData( ID INTEGER PRIM

15、ARY KEY, SensorID INTEGER, SiteNum INTEGER, Time VARCHAR(12), SensorParameter REAL ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );#ifdef _DEBUG_ printf(%sn,zErrMsg);#endif/插入数据char* sql1 = INSERT INTO SensorData VALUES( NULL , 1 , 1 , 200605011206, 18.9 ); ;sqlite3_exec( db , sql1 , 0 , 0 , &zErrMs

16、g );char* sql2 = INSERT INTO SensorData VALUES( NULL , 1 , 1 , 200605011306, 16.4 ); ;sqlite3_exec( db , sql2 , 0 , 0 , &zErrMsg );sqlite3_close(db); /关闭数据库return 0;编译运行:rootlocalhost liuxltest# gcc -o insert insert.c -lsqlite3rootlocalhost liuxltest# ./insertYou have opened a sqlite3 database named

17、 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语言中查询数据库中的数据。 函数接口sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg ); 解释: i

18、nt sqlite3_get_table(sqlite3*, const char *sql,char*result , int *nrow , int *ncolumn ,char *errmsg ); result中是以数组的形式存放你所查询的数据,首先是表名,再是数据。 nrow ,ncolumn分别为查询语句返回的结果集的行数,列数,没有查到结果时返回0程序三:query.c:view plaincopy to clipboardprint?#include #include #include sqlite3.h#define _DEBUG_int main( void )sqlite

19、3 *db=NULL;char *zErrMsg = 0;int rc;rc = sqlite3_open(zieckey.db, &db); /打开指定的数据库文件,如果不存在将创建一个同名的数据库文件if( rc ) fprintf(stderr, Cant open database: %sn, sqlite3_errmsg(db); sqlite3_close(db); exit(1);else printf(You have opened a sqlite3 database named zieckey.db successfully!nCongratulations! Have f

20、un ! - n);/创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中char *sql = CREATE TABLE SensorData( ID INTEGER PRIMARY KEY, SensorID INTEGER, SiteNum INTEGER, Time VARCHAR(12), SensorParameter REAL ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );#ifdef _DEBUG_ printf(zErrMsg = %s n, zErrMsg);#endif/插入数据sql = INS

21、ERT INTO SensorData VALUES(NULL , 1 , 1 , 200605011206, 18.9 ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );sql = INSERT INTO SensorData VALUES(NULL , 1 , 1 , 200605011306, 16.4 ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );int nrow = 0, ncolumn = 0;char *azResult; /二维数组存放结果/查询数据sql = SELECT * FR

22、OM SensorData ;sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );int i = 0 ;printf( row:%d column=%d n , nrow , ncolumn );printf( nThe result of querying is : n );for( i=0 ; i( nrow + 1 ) * ncolumn ; i+ ) printf( azResult%d = %sn, i , azResulti );/释放掉 azResult 的内存空间sqlite3_free

23、_table( azResult );#ifdef _DEBUG_ printf(zErrMsg = %s n, zErrMsg);#endifsqlite3_close(db); /关闭数据库return 0;#include #include #include sqlite3.h#define _DEBUG_int main( void )sqlite3 *db=NULL;char *zErrMsg = 0;int rc;rc = sqlite3_open(zieckey.db, &db); /打开指定的数据库文件,如果不存在将创建一个同名的数据库文件if( rc ) fprintf(st

24、derr, Cant open database: %sn, sqlite3_errmsg(db); sqlite3_close(db); exit(1);else printf(You have opened a sqlite3 database named zieckey.db successfully!nCongratulations! Have fun ! - n);/创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中char *sql = CREATE TABLE SensorData( ID INTEGER PRIMARY KEY, SensorID I

25、NTEGER, SiteNum INTEGER, Time VARCHAR(12), SensorParameter REAL ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );#ifdef _DEBUG_ printf(zErrMsg = %s n, zErrMsg);#endif/插入数据sql = INSERT INTO SensorData VALUES(NULL , 1 , 1 , 200605011206, 18.9 ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );sql = INSERT

26、 INTO SensorData VALUES(NULL , 1 , 1 , 200605011306, 16.4 ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );int nrow = 0, ncolumn = 0;char *azResult; /二维数组存放结果/查询数据sql = SELECT * FROM SensorData ;sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );int i = 0 ;printf( row:%d column=%d n , nrow , ncolumn );printf( nThe result of querying is : n );for( i=0 ; i( nrow + 1 ) * ncolumn ; i+ ) printf( azResult%d = %sn, i , azResulti

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

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