如何在Linux下用C/C++语言操作数据库sqlite3

http://tech.ddvip.com   2007年10月26日    社区交流

关键字: SQLite

内容摘要:我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理,包括创建数据库、创建表格、插入数据、查询数据、删除数据等。

  我们这里用到了一个查询的语句是 "SELECT * FROM SensorData " ,

  在C语言中对应的函数接口是 sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );

  这个函数接口的解释在程序中已经注释。

  下面我们编译运行下看看,

  [root@localhost temp]# export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH

  [root@localhost temp]# gcc query.c -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include

  query.c:29:21: warning: multi-line string literals are deprecated

  [root@localhost temp]# ./a.out

  You have opened a sqlite3 database named zieckey.db successfully!

  Congratulations! Have fun ! ^-^

  zErrMsg = (null)

  row:2 column=5

  The result of querying is :

  azResult[0] = ID

  azResult[1] = SensorID

  azResult[2] = SiteNum

  azResult[3] = Time

  azResult[4] = SensorParameter

  azResult[5] = 1

  azResult[6] = 1

  azResult[7] = 1

  azResult[8] = 200605011206

  azResult[9] = 18.9

  azResult[10] = 2

  azResult[11] = 1

  azResult[12] = 1

  azResult[13] = 200605011306

  azResult[14] = 16.4

  zErrMsg = (null)

  这里我们可以看到,azResult 的前面 5 个数据正好是我们的表 SensorData 的列属性,

  之后才是我们要查询的数据。所以我们的程序中才有 i<( nrow + 1 ) * ncolumn 的判断条件:

  for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )

  printf( "azResult[%d] = %s ", i , azResult[i] );

  输出中有 zErrMsg = (null) 这样的字句,这是 zErrMsg 保留的错误信息,

  正如你所看到的,zErrMsg 为空,表明在执行过程中没有错误信息。

作者:zieckey    责编:豆豆技术应用

正在加载评论...