如何在Linux下用CC++语言 *** 作数据库sqlite3

如何在Linux下用CC++语言 *** 作数据库sqlite3,第1张

示例代码:

// name: queryc

// This prog is used to test C/C++ API for sqlite3 It is very simple,ha !

// Author : zieckey All rights reserved

// data : 2006/11/18

#include <stdioh>

#include <stdlibh>

#include "sqlite3h"

#define _DEBUG_

int main( void )

{

sqlite3 db=NULL;

char zErrMsg = 0;

int rc;

rc = sqlite3_open("zieckeydb", &db); //打开指定的数据文件,如果不存在将创建一个同名的数据库文件

if( rc )

{

fprintf(stderr, "Can't open database: %s

", sqlite3_errmsg(db));

sqlite3_close(db);

exit(1);

}

else printf("You have opened a sqlite3 database named zieckeydb successfully!

Congratulations! Have fun ! ^-^

");

//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 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

", zErrMsg);

#endif

//插入数据

sql = "INSERT INTO "SensorData" VALUES(NULL , 1 , 1 , '200605011206', 189 );" ;

sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

sql = "INSERT INTO "SensorData" VALUES(NULL , 1 , 1 , '200605011306', 164 );" ;

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

" , nrow , ncolumn );

printf( "

The result of querying is :

" );

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

printf( "azResult[%d] = %s

", i , azResult[i] );

//释放掉 azResult 的内存空间

sqlite3_free_table( azResult );

#ifdef _DEBUG_

printf("zErrMsg = %s

", zErrMsg);

#endif

sqlite3_close(db); //关闭数据库

return 0;

}

我们这里用到了一个查询的语句是 "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 queryc -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include

queryc:29:21: warning: multi-line string literals are deprecated

[root@localhost temp]# /aout

You have opened a sqlite3 database named zieckeydb 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] = 189

azResult[10] = 2

azResult[11] = 1

azResult[12] = 1

azResult[13] = 200605011306

azResult[14] = 164

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 为空,表明在执行过程中没有错误信息。

1,首先排除设置了正确的SID连接

如:C:\Users\Administrator>set ORACLE_SID = orcl //确定本机数据库实例名

linux下用export ORACLE_SID=orcl

2,以sysdba连接,关闭数据库

sqlplus / as sysdba

shutdown immediate

如果不能关闭,windows下杀掉oracle进程,停掉oracle的服务

linux下:ps -ef|grep smon找到对应的pid

kill -9 <pid>

3,重新启动试试

startup

如果还是不行,查看报错原因,这里可能有很多,比如数据文件错误

4这里假如你的错误是数据文件引起

shutdown immediate

startup mount

recover datafile <datafile number>;

alter database open;

就可以了

Linux修改数据库配置文件需要停机。

修改配置之前,我们先备份一份配置文件 cp mv 命令都可以, 修改配置文件后,需要重启Apache服务器 restart。ps -ef|grep mysql检查mysql进程是否存在mysql已经停止了,直接start即可,restart是先停止现有的mysql,再start/etc/initd/mysqld start。

嵌入式Linux:

对Linux进行适当的修改和删减,并且能够在嵌入式系统上使用的系统,就是嵌入式Linux *** 作系统。

Linux系统是完全开放、免费的。正是开放性,它才能和其他系统互相兼容,进而实现信息的互联。而且它可以任意修改源代码,这是其他系统所不具备的。

Linux *** 作系统的显著优势是多用户和多任务。保证了多个用户使用互不影响;多任务独立开后,互不干扰,使得效率方面大大提高,可以充分把性能发挥出来。

以上就是关于如何在Linux下用C/C++语言 *** 作数据库sqlite3全部的内容,包括:如何在Linux下用C/C++语言 *** 作数据库sqlite3、数据库为什么会异常停止、Linux修改数据库配置文件 需要停机吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10199391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存