sqlite3 for linux

内容包含:数据库介绍,C中使用sqlite3的编程接口,以及实例展示

市面上有哪些数据库?
DB2
Oracle
Informix
Sybase
SQL Server
PostgreSQL
mySQL
Access
FoxPro

SQLite

sqlite3的特点:

1.独立性:sqlite 使用标准C 语言实现,它只需要非常少的系统或外部库的支撑,这使得它非常易于移植进嵌入式设备,同样这也使得它能应用于更广泛的不同配置的软件环境。sqlite 使用一个VFS(虚拟文件系统)层完成和磁盘的交互,而在不同系统中完成这个交互层是非常简单的工作。

2.非服务式:多数SQL 数据库是以服务的形式实现的,这要求客户程序必须通过某种中间接口来连接数据库。与此相反,SQLite 直接访问数据库文件本身,没有任何中间媒介。

3.零配置:如上所说,访问sqlite 数据库没有中间媒介,我们不用安装,配置和管理那些服务程序。SQLite just works

4.元处理:sqlite 的数据操作具有原子性、孤立性,程序或系统崩溃不会引发数据错误。

5.开放性:任何人可自由获得和使用sqlite,包括它的源码。

鉴于以上特性,有越来越多的网站和软件使用或嵌入了sqlite 数据库引擎,已知的包括:GoogleQQMozilla Firefox Mac 电脑、PHPSkypeSymbianOSAOLSolaris 10 installationsMcAfeeiPhones等。

Oracle
  Oracle是一个最早商品化的关系型数据库管理系统,也是应用广泛、功能强大的数据库管理系统。Oracle作为一个通用的数据库管理系统,不仅具有完整的数据管理功能,还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。特别是在Oracle 8i中,支持面向对象的功能,如支持类、方法、属性等,使得Oracle 产品成为一种对象/关系型数据库管理系统。
Microsoft SQL Server
  Microsoft SQL Server是一种典型的关系型数据库管理系统,可以在许多操作系统上运行,它使用Transact-SQL语言完成数据操作。由于Microsoft SQL Server是开放式的系统,其它系统可以与它进行完好的交互操作。目前最新版本的产品为Microsoft SQL Server 2000,它具有可靠性、可伸缩性、可用性、可管理性等特点,为用户提供完整的数据库解决方案。
Microsoft Office
  作为Microsoft Office组件之一的Microsoft Access是在Windows环境下非常流行的桌面型数据库管理系统。使用Microsoft Access无需编写任何代码,只需通过直观的可视化操作就可以完成大部分数据管理任务。在Microsoft Access数据库中,包括许多组成数据库的基本要素。这些要素是存储信息的表、显示人机交互界面的窗体、有效检索数据的查询、信息输出载体的报表、提高应用效率的宏、功能强大的模块工具等。它不仅可以通过ODBC与其它数据库相连,实现数据交换和共享,还可以与Word、Excel等办公软件进行数据交换和共享,并且通过对象链接与嵌入技术在数据库中嵌入和链接声音、图像等多媒体数据。


接口:
<sqlite3.h>, 在ubuntu编译时记得加上 -lsqlite3 不然会显示sqlite3_open等functions未定义
● 打开(新建)数据库
sqlite3 * db;
sqlite3_open("test.db", &db);
● 关闭数据库
sqlite3_close(db);
● 执行SQL语句
int sqlite3_exec(
  sqlite3* ppDb,                             /* An open database */
  constchar  *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
); 

sqlite3 student.db
数据类型 NULL,TEXT,INTEGER,REAL(浮点),BLOB
//sqlite3中大小写不分
创建
createtable student( ID INTEGER, name TEXT, sex TEXT, age INTEGERprimary key(ID) );   
create table  mytable(id integer  primary key , value text);
插入
insert into mytable  values(1, 'Micheal'); 
insert into mytable(id) values('Francis');
删除
drop table student;
更新
update student set Sex = 'F', Age = 20, where Name = 'Zhang';
删除记录
deletefrom student where ID = 2;
查找
select *  from score where  score < 60;
select * from student  order by  score  asc ;
select * from student order by score desc    
select  student.name  from  student, score  where  student.id = score.id and  score.score < 60;


Example:查询示例代码
if( sqlite3_open(INFOFILEPATH, &userinfo_db) != SQLITE_OK)      //打开数据库文件,OK返回SQLITE_OK
{
        fprintf(stderr, "%s %d usersinfo open err:%s", __FILE__, __LINE__, strerror(errno));
        exit(EXIT_FAILURE);
}
sprintf(sql, "select password from account where account='%s'", real_account);
if( sqlite3_prepare(userinfo_db, sql, -1, &stmt, NULL) != SQLITE_OK)   //sqlite_prepare准备sql语句,成功
{
        fprintf(stderr, "%s %d auth prepare err:%s", __FILE__, __LINE__, strerror(errno));
        exit(EXIT_FAILURE);
}
res = sqlite3_step(stmt);                                       //执行sql语句
if(res == SQLITE_ROW) // account success        //查找到信息,成功返回SQLITE_row
{
    ....
}
sqlite3_close(userinfo_db);                                 //关闭数据库
 
     
 
     
 
     
 
     Example:插入等操作
sprintf(sql, "insert into u%s(id,online,groupname) values('%s', 0, 'friend')", host, des);  //插入语句
if( sqlite3_prepare(db, sql, -1, &stmt, NULL) != SQLITE_OK)                                 //准备语句
{
        sprintf(stderr, "%s %d insert prepare err:%s", __FILE__, __LINE__, strerror(errno));
         exit(EXIT);
}
rc = sqlite3_step(stmt);                //执行
if(rc != SQLITE_DONE)                 //返回SQLITE_DONE 表示执行成功
{
        sprintf(stderr, "%s %d step err:%s", __FILE__, __LINE__, strerror(errno));
         exit(EXIT);
}
sqlite3_close(userinfo_db);                                 //关闭数据库
 
     
 
     
 
     
 
     
 
     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值