数据库
来源:互联网 发布:注册.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 数据库引擎,已知的包括:Google、QQ、Mozilla Firefox 、Mac 电脑、PHP、Skype、SymbianOS、AOL、Solaris 10 installations、McAfee、iPhones等。
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);
● 关闭数据库
● 执行SQL语句
- int sqlite3_exec(
- sqlite3* ppDb,
- constchar *sql,
- int (*callback)(void*,int,char**,char**),
- void *,
- char **errmsg
- );
sqlite3 student.db
数据类型 NULL,TEXT,INTEGER,REAL(浮点),BLOB
创建
createtable student( ID INTEGER, name TEXT, sex TEXT, age INTEGER, primary 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)
- {
- 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)
- {
- fprintf(stderr, "%s %d auth prepare err:%s", __FILE__, __LINE__, strerror(errno));
- exit(EXIT_FAILURE);
- }
- res = sqlite3_step(stmt);
- if(res == 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)
- {
- sprintf(stderr, "%s %d step err:%s", __FILE__, __LINE__, strerror(errno));
- exit(EXIT);
- }
- sqlite3_close(userinfo_db);
0 0