- 浏览: 1061906 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- C++ (39)
- Java (74)
- Java界面开发学习笔记 (4)
- Java用户的c++之旅 (0)
- 自言自语 (12)
- DSP (1)
- MCU (0)
- CG (0)
- Jabber (0)
- Gloox (0)
- Linux (11)
- Windows (19)
- Networks (4)
- Jobs (0)
- PHP (1)
- JSP (2)
- 生活 (35)
- C (2)
- Qt4 (2)
- C# (50)
- WPF (5)
- ASP (2)
- FLEX (47)
- SQL (20)
- JavaScript (12)
- SharePoint (6)
- GWT (1)
- Dojo (9)
- HTML (11)
- Others (7)
- 如何安装配置系列 (7)
- UML (2)
- Android (3)
- alibaba (1)
最新评论
-
zxjlwt:
学习了http://surenpi.com
Firefox插件开发: Hello World! -
ylldzz:
楼主知道MVEL怎么调试么
MVEL简介及快速使用 -
blueman2012:
您好,可否提供源码下载,我把您的代码贴过来后,好多报错的,谢谢 ...
Log4J日志解析 -
svygh123:
你的游标都没有关闭呢!
MYSQL游标嵌套循环示例 -
dizh:
写的很好啊
MVEL简介及快速使用
Sqlite确实是一个比较好的本地数据库,从接触它的时候就喜欢上了它,它可以在很多情况下简化应用。不过以前都是在Java里面使用,或者Linux C下使用的,现在有个项目(C++)可能我会用到sqlite做数据持久化,所以先热热身。
第一步:下载相关文件
首先到这里下载sqlite-source-3_6_12.zip、sqlite-3_6_12.zip、 sqlitedll-3_6_12.zip三个包,并分别解压。
第二步:生成SQLite的lib文件
cmd进入命令行后输入: LIB /DEF:SQLITE3.DEF /MACHINE:IX86
如果找不到命令LIB,则需要将Microsoft Visual Studio\VC98\Bin这个目录添加到环境变量里。这样就生成了sqlite3.lib文件,我们在后面需要用到这个库,用于链接win32程序
第三步:编写测试工程
新建项目,将sqlite3.h(在源码包里)、sqlite3.dll、sqlite3.lib设置到工程环境里,或者直接拷贝到工程目录下。
然后我们将cmd切换到sqlite3的目录下,里面有个sqlite3.exe。执行命令:
> sqlite3 D:\sql.db ;生成sql.db的数据库文件
sqlite3 > create table test_tab (f1 int, f2 long);
sqlite3 > .q
这样我们就生成了一张test_tab的表。
然后编写如下代码:
编译、链接、执行,看看效果吧。
SQLite不愧是数据存储的 "瑞士军刀".不像使用某些数据库,要配置ODBC,还要把一大堆的dll一起打包到最终的用户程序中去.还得使用depends之类的工具看要打包哪些.dll.
更多学习参看sqlite提供的document啦```
第一步:下载相关文件
首先到这里下载sqlite-source-3_6_12.zip、sqlite-3_6_12.zip、 sqlitedll-3_6_12.zip三个包,并分别解压。
第二步:生成SQLite的lib文件
cmd进入命令行后输入: LIB /DEF:SQLITE3.DEF /MACHINE:IX86
如果找不到命令LIB,则需要将Microsoft Visual Studio\VC98\Bin这个目录添加到环境变量里。这样就生成了sqlite3.lib文件,我们在后面需要用到这个库,用于链接win32程序
第三步:编写测试工程
新建项目,将sqlite3.h(在源码包里)、sqlite3.dll、sqlite3.lib设置到工程环境里,或者直接拷贝到工程目录下。
然后我们将cmd切换到sqlite3的目录下,里面有个sqlite3.exe。执行命令:
> sqlite3 D:\sql.db ;生成sql.db的数据库文件
sqlite3 > create table test_tab (f1 int, f2 long);
sqlite3 > .q
这样我们就生成了一张test_tab的表。
然后编写如下代码:
#include "sqlite3.h" #include <iostream> #include <sstream> using namespace std; sqlite3 * pDB; int createTable() { char* errMsg; std::string dropTab = "drop table test_tab;"; string strSQL= "create table test_tab (f1 int, f2 long);"; int res= sqlite3_exec(pDB , dropTab.c_str() , 0 , 0 , &errMsg); if (res != SQLITE_OK) { std::cout << "执行SQL 出错." << errMsg << std::endl; return -1; } res = sqlite3_exec(pDB , strSQL.c_str() ,0 ,0, &errMsg); if (res != SQLITE_OK) { std::cout << "执行创建table的SQL 出错." << errMsg << std::endl; return -1; } else { std::cout << "创建table的SQL成功执行."<< std::endl; } return 0; } int insert1() { char* errMsg; int res = sqlite3_exec(pDB,"begin transaction;",0,0, &errMsg); for (int i= 1; i < 10; ++i) { std::stringstream strsql; strsql << "insert into test_tab values("; strsql << i << ","<< (i+10) << ");"; std::string str = strsql.str(); res = sqlite3_exec(pDB,str.c_str(),0,0, &errMsg); if (res != SQLITE_OK) { std::cout << "执行SQL 出错." << errMsg << std::endl; return -1; } } res = sqlite3_exec(pDB,"commit transaction;",0,0, &errMsg); std::cout << "SQL成功执行."<< std::endl; return 0; } static int callback(void *NotUsed, int argc, char **argv, char **azColName) { for(int i = 0 ; i < argc ; i++) { std::cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << ", " ; } std::cout<< "\n"; return 0; } int select1() { char* errMsg; string strSQL= "select * from test_tab;"; int res = sqlite3_exec(pDB, strSQL.c_str(), callback , 0 , &errMsg); if (res != SQLITE_OK) { std::cout << "执行SQL 出错." << errMsg << std::endl; return -1; } else { std::cout << "SQL成功执行."<< std::endl; } return 0; } int main() { int res = sqlite3_open("D:\\sql.db", &pDB); if( res ){ std::cout << "Can't open database: "<< sqlite3_errmsg(pDB); sqlite3_close(pDB); return -1; } res = createTable(); if (res != 0) { return 0; } res = insert1(); if (res != 0) { return 0; } select1(); return 0; }
编译、链接、执行,看看效果吧。
SQLite不愧是数据存储的 "瑞士军刀".不像使用某些数据库,要配置ODBC,还要把一大堆的dll一起打包到最终的用户程序中去.还得使用depends之类的工具看要打包哪些.dll.
更多学习参看sqlite提供的document啦```
发表评论
-
错误的结果 2 (从“C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe
2010-05-31 17:59 2113一般是项目的配置出问题了,可以禁用优化试试。 -
C++“读取位置 0x****** 时发生访问冲突”的可能原因
2010-05-31 16:41 18875这种错误的意思一般是指访问了不属于自己的内存空间,出现这种错误 ... -
/MD、MDd 和 /MT、MTd
2010-05-31 14:42 3165这里总结下他们的区别 后面的那个'd'是代表DEBUG版 ... -
如何解决“Invalid Address specified to RtlValidateHeap”错误?
2010-05-31 14:00 4735一个可能的原因:在不同模块(工程)之间传递 ... -
设置C++类库输出类型(DLL or LIB)
2010-05-26 17:00 2516打开工程属性,然后选择“配置属性 --> 常规 --&g ... -
C++如何获取系统进程列表
2010-05-20 16:33 4215PROCESSENTRY32 pe32; // 在使 ... -
【转】OpenCV中IplImage 与 Gdiplus 中Bitmap之间的相互转换
2010-05-19 15:05 4175// pIplImage 需要外部释放 Mosesyua ... -
如何在Visual Studio环境中创建和调用类库(DLL+LIB) + 关于LibSVM的使用
2010-05-09 18:23 8264好久没有使用C++做开发,所以对C++的开发环境( ... -
关于构造函数初始化列表顺序的面试题
2009-06-01 22:46 1511#include <iostream> #i ... -
编写类String的构造函数、析构函数和赋值函数
2009-06-01 22:22 5195这个在面试或笔试的时候常问到或考到。 已知类String的原 ... -
深度探索智能指针(Smart Pointer)
2009-06-01 16:07 1834主题索引: 一、剖析C++标准库智能指针(std::auto ... -
Windows下的Boost库的使用
2009-05-31 17:03 2782我采用的是VC8.0和boost_1_35_0。自己重新编译b ... -
string与char*
2009-05-31 16:50 22061、C++ 里有字符串类型string ,最大可支持1G,可用 ... -
C++语言中数组指针和指针数组彻底分析(系列一)
2009-05-31 16:39 1625近来在论坛中机场经常看到有关数组指针和指针数组的讨论。这个是学 ... -
下面的程序会在哪一行崩溃---指针安全问题
2009-05-31 14:47 1746struct S { int i; int* p ... -
“缓冲区溢出”错误
2009-05-31 13:56 1139试图对不存在的元素进行下标操作是程序设计过程中经常犯的严重错误 ... -
一道关于C++继承的面试题
2009-05-31 13:51 1482#include <iostream> ... -
结构体的大小计算
2009-05-30 18:04 1338示例程序: #include <stdio.h> ... -
指针的大小--sizeof问题
2009-05-30 16:57 12179指针的大小是问:一个指针变量占用多少内存空间? 分析:既然指 ... -
深入理解C++中的mutable关键字
2009-05-30 16:05 1435mutalbe的中文意思是“可变的,易变的”,跟constan ...
相关推荐
使用C++操作SQLite数据库,在windows平台上,用C++语言
c++调用sqlite3需要的三个文件,分别是sqlite3.dll sqlite3.h sqlite3.lib
在Windows操作系统下,如果想通过C++...共包括以下五个文件:sqlite3.lib sqlite3.h sqlite3.dll sqlite3.def mspdb60.dll 相关调用调用步骤和使用方法可见如下内容: http://linger-yan.iteye.com/admin/blogs/1600007
c++连接sqlite数据库的实例 c++连接sqlite数据库的实例
自己用C++封装sqlite3 for vc,内含Sqlite3 官方库
Sqlite3 C++ 简单单例数据库操作类封装,支持数据的简单操作,可用,尚不完善
sqlite3C++版动态库和头文件,可直接调用。
实用Visual Studio 2010开发环境,可以重新编译运行
用VC++6.0开发的基于对话框的应用程序,可以编译运行。目录下有一个名为student.db的文件,...这个代码说明了怎么用C/C++连接SQLite数据库文件及进行基本的操作,比如插入新的数据,查询数据。对学习SQLite数据库有帮助
基于标准库的C++ sqlite3常用功能封装和使用 实现对SQLite常用功能的封装,如:增,删,改,查,事务。
c++的sqlite3接口.如果是c语言的话把函数参数传引用的地方的引用去掉即可,返回时返回指针就OK了.在linux环境下调试OK.里面有个示例Makefile及相应的源码.Makefile要根据个人机器上的sqlite3的头文件及动态库的存放...
SQLite3 的类库,已经转了格式,可以在c++builder中使用, 使用BCB 2010通过。放在这里留个备份。
使用vs编译sqlite3加密版本,包含完整的编译教程和sqlite3源码,我自己就是用这个编译的,亲测可用
c++连接sqlite需要的sqlite的库文件、头文件等。。。。。。
SQLite3的C++接口,实现1.查询 2.插入 3.更新 4.删除 5.清屏 6.跳出 六个功能!
SQLite3应用库C++,不用编译,里面带exe,dll,.h文件 使用方法参照内部ReadMe文档。
SQLite并没有一次性做到位,只有下载这些东西是不能放在vs2010中并马上使用的,下载下来的文件中有sqlite3.c/h/dll/def,还是不够用的。我们需要的sqlite3.lib文件并不在其中,需要我们自己动手了。 这儿要用到...
sqlite数据库,用c++封装类,以及源码实现的对sqlite数据库封装类的操作。同时有boost多线程对sqlite数据库进行操作。 真是学习居家的好例子。。。。
基于sqlite-amalgamation-3280000和wxsqlite3-3.3.1重编译版本,支持Sqlite3_key和Sqlite3_rekey方法
简单易用的基于SQLite3的C++ ORM框架