市面上有哪些数据库?
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 * db;
sqlite3_open("test.db", &db);
sqlite3_close(db);
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 */
);
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); //关闭数据库