数据库

来源:互联网 发布:注册.hk域名 编辑:程序博客网 时间:2024/05/22 15:56
市面上有哪些数据库?
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未定义
● 打开(新建)数据库
[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. sqlite3 * db;  
  2. sqlite3_open("test.db", &db);  
● 关闭数据库
[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. sqlite3_close(db);  
● 执行SQL语句
[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. int sqlite3_exec(  
  2.   sqlite3* ppDb,                             /* An open database */  
  3.   constchar  *sql,                           /* SQL to be evaluated */  
  4.   int (*callback)(void*,int,char**,char**),  /* Callback function */  
  5.   void *,                                    /* 1st argument to callback */  
  6.   char **errmsg                              /* Error msg written here */  
  7. );   

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:查询示例代码
[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. if( sqlite3_open(INFOFILEPATH, &userinfo_db) != SQLITE_OK)      //打开数据库文件,OK返回SQLITE_OK  
  2. {  
  3.         fprintf(stderr, "%s %d usersinfo open err:%s", __FILE__, __LINE__, strerror(errno));  
  4.         exit(EXIT_FAILURE);  
  5. }  
  6. sprintf(sql, "select password from account where account='%s'", real_account);  
  7. if( sqlite3_prepare(userinfo_db, sql, -1, &stmt, NULL) != SQLITE_OK)   //sqlite_prepare准备sql语句,成功  
  8. {  
  9.         fprintf(stderr, "%s %d auth prepare err:%s", __FILE__, __LINE__, strerror(errno));  
  10.         exit(EXIT_FAILURE);  
  11. }  
  12. res = sqlite3_step(stmt);                                       //执行sql语句  
  13. if(res == SQLITE_ROW) // account success        //查找到信息,成功返回SQLITE_row  
  14. {  
  15.     ....  
  16. }  
  17. sqlite3_close(userinfo_db);                                 //关闭数据库  
Example:插入等操作
[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. sprintf(sql, "insert into u%s(id,online,groupname) values('%s', 0, 'friend')", host, des);  //插入语句  
  2. if( sqlite3_prepare(db, sql, -1, &stmt, NULL) != SQLITE_OK)                                 //准备语句  
  3. {  
  4.         sprintf(stderr, "%s %d insert prepare err:%s", __FILE__, __LINE__, strerror(errno));  
  5.          exit(EXIT);  
  6. }  
  7. rc = sqlite3_step(stmt);                //执行  
  8. if(rc != SQLITE_DONE)                 //返回SQLITE_DONE 表示执行成功  
  9. {  
  10.         sprintf(stderr, "%s %d step err:%s", __FILE__, __LINE__, strerror(errno));  
  11.          exit(EXIT);  
  12. }  
  13. sqlite3_close(userinfo_db);                                 //关闭数据库  
0 0
原创粉丝点击