最近想找一个文件型数据库,并且独立,不用安装一些东西即可使用,后来朋友推荐给我sqlite,用了一段时间,觉得很不错,很适合那些非典型数据库软件的设计。
一、SQLite数据库的优势:
1、零配置:无需安装和管理配置
2、灵活:储存在单一磁盘文件中的一个完整的数据库
3、存储量客观: 支持数据库大小至2TB
4、源代码足够小:大致3万行C代码
5、比Acess数据库要快,与mysql的速度差不多
6、简单:SQLite的API使用起来很方便
7、良好注释的源代码、并且有着90%以上的测试覆盖率
8、独立:没有额外依赖
9、完全开源:你可以用于任何用途, 包括出售它
10、支持多种开发语言:C/C++、PHP、Perl、Java、ASP.NET、python
二、配置环境:
首先我们需要下载SQLite的Windows版本,地址如下:
windows版
www.sqlite.com.cn/Upfiles/source/sqlite-3_3_7.zip
www.sqlite.com.cn/Upfiles/source/sqlitedll-3_3_7.zip
www.sqlite.com.cn/Upfiles/source/sqlite-source-3_3_7.zip
sqlite-3_3_7.zip文件:这个是SQLite的可执行文件(包含sqlite3.exe文件)
sqlitedll-3_3_7.zip文件:这个是SQLite的动态链接库文件(包含sqlite3.def文件和sqlite3.dll文件)
sqlite-source-3_3_7.zip:这个是SQLite的源码文件(包含sqlite3.h等文件)
这些文件里面并没有给我们提供LIB文件,我们需要自己编译出LIB文件。具体方法如下:
注:假设我的VC++6.0安装目录为C:Program FilesMicrosoft Visual Studio
第一步:将sqlite3.def文件拷到C:Program FilesMicrosoft Visual StudioVC98Bin目录下。
第二步:在C:Program FilesMicrosoft Visual StudioVC98Bin目录下有lib.exe的可执行文件,这个lib.exe文件是VC++6.0的一个工具,它用来添加、 修改,合并LIB
文件。使用它我们就可以得到我们需要的SQLite3.lib文件了。打开命令行,输入如下命令。
C:Program FilesMicrosoft Visual StudioVC98Bin>LIB /MACHINE:IX86 /DEF:sqlite3.def
注:此时有可能会弹出一个警告说缺少MSPDB60.DLL文件,此时,我们到C:Program FilesMicrosoft Visual Studio目录下搜索MSPDB60.DLL这个文件,把这个文件复制到Bin文件夹中即可。
现在在C:Program FilesMicrosoft Visual StudioVC98Bin目录下出现了sqlite3.lib文件和sqlite3.exp文件,我们要用到sqlite3.lib文件,将sqlite3.exp文件删去即可。
第四步:我们打开VC++6.0,新建一个MFC对话框工程,名字叫SQLiteSample。在工程目录下新建一个文件夹,名字为AppMySQL再将sqlite3.h,sqlite3.lib这二个文件复制到这个文件夹中。将sqlite3.dll复制到工程目录下。
到此为止,配置环境工作就做完了。
三、编程实现
编写一个简单的程序。首先在CSQLiteSampleDlg类的头文件顶部加上以下代码:
#include "AppMySQL/sqlite3.h"
#pragma comment(lib, "AppMySQL/sqlite3.lib")
然后在OnInitDialog()方法中加入代码,加完代码后的OnInitDialog()方法如下:
BOOL CSQLiteSampleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
sqlite3 *db=NULL;//数据库指针
CString Errstr;//错误字符串
int ret;
ret = sqlite3_open("first.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
if(ret != SQLITE_OK)
{
Errstr = sqlite3_errmsg(db);
MessageBox("can't open first.db:"+Errstr);
sqlite3_close(db);//关闭数据库
}
else MessageBox("open first.db successfully!");
sqlite3_close(db); //关闭数据库
return TRUE; // return TRUE unless you set the focus to a control
}
这段代码用来打开一个数据库,当数据库不存在的时候就会新建一个。