- 浏览: 1076323 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 2151一般是项目的配置出问题了,可以禁用优化试试。 -
C++“读取位置 0x****** 时发生访问冲突”的可能原因
2010-05-31 16:41 18974这种错误的意思一般是指访问了不属于自己的内存空间,出现这种错误 ... -
/MD、MDd 和 /MT、MTd
2010-05-31 14:42 3220这里总结下他们的区别 后面的那个'd'是代表DEBUG版 ... -
如何解决“Invalid Address specified to RtlValidateHeap”错误?
2010-05-31 14:00 4824一个可能的原因:在不同模块(工程)之间传递 ... -
设置C++类库输出类型(DLL or LIB)
2010-05-26 17:00 2558打开工程属性,然后选择“配置属性 --> 常规 --&g ... -
C++如何获取系统进程列表
2010-05-20 16:33 4270PROCESSENTRY32 pe32; // 在使 ... -
【转】OpenCV中IplImage 与 Gdiplus 中Bitmap之间的相互转换
2010-05-19 15:05 4229// pIplImage 需要外部释放 Mosesyua ... -
如何在Visual Studio环境中创建和调用类库(DLL+LIB) + 关于LibSVM的使用
2010-05-09 18:23 8341好久没有使用C++做开发,所以对C++的开发环境( ... -
关于构造函数初始化列表顺序的面试题
2009-06-01 22:46 1549#include <iostream> #i ... -
编写类String的构造函数、析构函数和赋值函数
2009-06-01 22:22 5226这个在面试或笔试的时候常问到或考到。 已知类String的原 ... -
深度探索智能指针(Smart Pointer)
2009-06-01 16:07 1871主题索引: 一、剖析C++标准库智能指针(std::auto ... -
Windows下的Boost库的使用
2009-05-31 17:03 2825我采用的是VC8.0和boost_1_35_0。自己重新编译b ... -
string与char*
2009-05-31 16:50 22431、C++ 里有字符串类型string ,最大可支持1G,可用 ... -
C++语言中数组指针和指针数组彻底分析(系列一)
2009-05-31 16:39 1669近来在论坛中机场经常看到有关数组指针和指针数组的讨论。这个是学 ... -
下面的程序会在哪一行崩溃---指针安全问题
2009-05-31 14:47 1780struct S { int i; int* p ... -
“缓冲区溢出”错误
2009-05-31 13:56 1174试图对不存在的元素进行下标操作是程序设计过程中经常犯的严重错误 ... -
一道关于C++继承的面试题
2009-05-31 13:51 1521#include <iostream> ... -
结构体的大小计算
2009-05-30 18:04 1361示例程序: #include <stdio.h> ... -
指针的大小--sizeof问题
2009-05-30 16:57 12239指针的大小是问:一个指针变量占用多少内存空间? 分析:既然指 ... -
深入理解C++中的mutable关键字
2009-05-30 16:05 1469mutalbe的中文意思是“可变的,易变的”,跟constan ...
相关推荐
ASqlite3Components是一款专为Delphi和C++Builder开发者设计的SQLite3数据库接口组件,它将SQLite3的核心功能封装到了一个自包含的组件中,无需依赖外部的sqlite3.dll动态链接库。这一特性使得在部署应用程序时更加...
无论是在Windows、Unix还是其他操作系统上,只要遵循标准C或C++编程规范,就能够顺利地集成SQLite3,享受其带来的便捷与高效。 最后,随着技术的不断进步,SQLite3也在持续演进。开发者应定期关注其官方网站,了解...
SQLite ODBC驱动程序是...总的来说,SQLite ODBC驱动为开发者和用户提供了灵活且方便的方式来访问SQLite数据库,不论其操作系统是32位还是64位,都可通过标准化的ODBC接口进行数据交互,从而提升了开发效率和用户体验。
1. **下载 SQLite**:访问官方下载页面,下载适用于 Windows 的最新版本,例如 sqlite-3_5_1.zip。 2. **解压文件**:将下载的压缩包解压到指定目录,如 C:\sqlite。 3. **配置环境**:在解压后的目录中,你会看到 ...
在C++代码中,由于C++和C的内存管理方式不同,你需要使用`extern "C"`来确保C语言编写的SQLite3库在C++环境中能够正常工作。例如: ```cpp extern "C" { #include "./sqlite3.h" } ``` 接下来是SQLITE操作入门。...
4. **内容提供者(Content Provider)**:虽然不是必需的,但在Android中,如果你想让其他应用能访问你的SQLite数据库,可以使用Content Provider。这允许数据共享,并遵循Android的安全模型。 5. **数据库的事务处理...
3. **跨平台**: SQLite具有良好的跨平台兼容性,可以在多种编程语言中使用,如C、C++、Python、Java、PHP等。 4. **小巧高效**: SQLite的体积小,但性能出色,适合于嵌入式设备和移动应用。 5. **丰富的SQL支持**:...
在提供的标签中,`utf-8`和`unicode`都是关于字符编码的,`sqlite`表明了数据库的选择,而`vc2010`可能意味着在Windows下使用Visual C++ 2010进行开发。在Windows环境中,可能需要处理系统默认编码与项目编码的兼容...
4. 数据操作:通过`sqlite3_prepare_v2`预编译SQL语句,然后通过`sqlite3_step`和`sqlite3_bind`进行数据操作,最后使用`sqlite3_finalize`释放资源。 5. 保存和恢复:为了在不同会话间保持数据,你需要将数据库...
本项目结合了 `Qt` 的图形界面能力,构建了一个模拟键盘,并引入了数组模式和 `sqlite` 数据库功能,以提升用户体验和数据管理。 **1. Qt 虚拟键盘** `Qt` 提供了一系列的组件和工具来创建用户界面,其中 `QWidget...
总的来说,"基于C++的捕鱼达人小游戏"是一个结合了Qt5图形界面、SQLite3数据库管理和C++编程技术的项目,展现了开发者在游戏开发方面的技能。尽管目前仍有改进空间,但已经具备了基本的游戏流程和互动元素,为未来的...
在IT领域,尤其是在Windows开发中,MFC(Microsoft Foundation Classes)是一个非常重要的库,它为C++程序员提供了构建Windows应用程序的框架。CListCtrl是MFC中的一个控件,用于显示列表视图,通常用于展示表格或...
- **SQL连接**:通常人事管理系统会连接到数据库存储信息,如MySQL或SQLite,需要了解SQL语句和相应的C++库如MySQL Connector/C++或SQLite3 API。 - **CRUD操作**:创建(Create)、读取(Read)、更新(Update)...
C++可以利用如SQLite、MySQL等数据库API进行连接和操作。例如,通过SQL语句实现对学生信息的增删改查,确保数据的持久化存储。 四、主要功能模块 1. 学生信息管理:包括添加、删除、修改和查询学生的基本信息,如...
3. **数据库连接**:为了持久保存数据,系统需要连接到数据库,如MySQL或SQLite,用于存储用户账户和水电使用记录。 二、核心功能实现 1. **用户管理**:用户注册、登录功能,支持密码加密存储,确保用户信息安全...
《C++编写的图书管理系统及实习报告》是一个典型的软件工程实践项目,主要涵盖了数据库管理和C++编程技术。在这个系统中,C++作为后端的主要开发语言,用于实现系统的功能逻辑,而图书管理则是具体的应用场景,涉及...
这个系统的主要目的是为了高效地管理和处理学生的成绩数据,它允许用户通过网络进行数据交互,提高了信息的共享和访问效率。以下是这个系统的核心知识点: 1. **C++编程**:C++是一种强大的、面向对象的编程语言,...
C++可以与SQL数据库进行交互,如MySQL或SQLite,通过ODBC或API实现数据存取。在系统中,我们需要设计合适的数据结构来存储书籍信息(如书名、作者、出版社、出版年份等)和用户信息(如姓名、联系方式、借阅权限等)...
常见的数据库管理系统如MySQL、SQLite等可以被集成到C++程序中。开发者使用SQL语句来操作数据库,实现数据的增删改查。为了保证数据的一致性,还可能应用事务处理机制,确保在并发环境下数据的正确性。 四、学生端...