热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C++使用SQLite步骤及示例

C++使用SQLite步骤及示例开发环境:WindowsXP+VS2005。开发语言:C++。1、下载sqlite文件。下载网址:http:www.sq
C++使用SQLite步骤及示例
开发环境:Windows XP+VS2005。

开发语言:C++。


1、 下载sqlite文件。

下载网址: http://www.sqlite.org/download.html。

SQLite版本为SQLite 3.7.13,相关文件如下。
sqlite-dll-win32-x86-3071300.zip:包含sqlite3.def、sqlite3.dll文件。
sqlite-amalgamation-3071300.zip:包含sqlite3.h 文件。
sqlite-shell-win32-x86-3071300.zip:包含sqlite3.exe 文件。


2、 生成sqlite3.lib。

sqlite-dll-win32-x86-3071300.zip文件解压到D:\ sqlite。
运行Visual Studio 2005 Command Prompt命令行程序。
启动位置:开始程序->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt。
依次执行控制台命令。
cd D:\sqlite\sqlite-dll-win32-x86-3071300
D:
lib /def:sqlite3.def /machine:ix86

即可生成sqlite3.lib文件。


3、 创建测试数据。

sqlite-shell-win32-x86-3071300.zip文件解压到D:\ sqlite。
启动命令行,进入D:\ sqlite目录。
命令依次为:
cd D:\sqlite
d:
创建test.db测试文件。
创建user表。
字段Code 字段类型 字段描述
id integer 主键,自增
name varchar(64) 用户名
age integer 年龄
创建命令依次如下。
D:\sqlite>sqlite3.exe test.db
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table user
...> (
...> id integer primary key autoincrement,
...> name varchar(64),
...> age integer
...> );
sqlite> .quit


4、 创建示例工程

创建win32控制台工程SQLiteTest。
sqlite3.h(在sqlite-amalgamation-3071300.zip压缩包中)添加到工程。
sqlite3.lib复制到工程文件夹下。
工程属性中添加sqlite3.lib库依赖。
Configuration Properties->Linker->Input->Additional Dependencies添加sqlite3.lib。
程序代码为:
/*
@brief 本程序测试sqlite数据库的增删改查
@date 2012-09-03
*/
// SQLiteTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "sqlite3.h"
#include
using namespace std;

sqlite3 * pDB = NULL;

//增加用户
bool AddUser(const string& sName, const string& sAge);
//删除用户
bool DeleteUser(const string& sName);
//修改用户
bool ModifyUser(const string& sName, const string& sAge);
//查找用户
bool SelectUser();

int _tmain(int argc, _TCHAR* argv[])
{
//打开路径采用utf-8编码
//如果路径中包含中文,需要进行编码转换
int nRes = sqlite3_open("D:\\sqlite\\test.db", &pDB);
if (nRes != SQLITE_OK)
{
cout<<"Open database fail: "< goto QUIT;
}

//添加“赵钱孙李”
if ( !AddUser("zhao", "18")
|| !AddUser("qian", "19")
|| !AddUser("sun", "20")
|| !AddUser("li", "21"))
{
goto QUIT;
}

//删除“赵”
if (!DeleteUser("zhao"))
{
goto QUIT;
}

//修改“孙”
if (!ModifyUser("sun", "15"))
{
goto QUIT;
}

//查找用户
if (!SelectUser())
{
goto QUIT;
}

QUIT:
sqlite3_close(pDB);

return 0;
}

bool AddUser(const string& sName, const string& sAge)
{
string strSql = "";
strSql += "insert into user(name,age)";
strSql += "values('";
strSql += sName;
strSql += "',";
strSql += sAge;
strSql += ");";

char* cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str() ,0 ,0, &cErrMsg);
if (nRes != SQLITE_OK)
{
cout<<"add user fail: "< return false;
}
else
{
cout<<"add user success: "< }

return true;
}

bool DeleteUser(const string& sName)
{
string strSql = "";
strSql += "delete from user where name='";
strSql += sName;
strSql += "';";

char* cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str() ,0 ,0, &cErrMsg);
if (nRes != SQLITE_OK)
{
cout<<"delete user fail: "< return false;
}
else
{
cout<<"delete user success: "< }

return true;
}

bool ModifyUser(const string& sName, const string& sAge)
{
string strSql = "";
strSql += "update user set age =";
strSql += sAge;
strSql += " where name='";
strSql += sName;
strSql += "';";

char* cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str() ,0 ,0, &cErrMsg);
if (nRes != SQLITE_OK)
{
cout<<"modify user fail: "< return false;
}
else
{
cout<<"modify user success: "< }

return true;
}

static int UserResult(void *NotUsed, int argc, char **argv, char **azColName)
{
for(int i = 0 ; i {
cout< }
cout<
return 0;
}

bool SelectUser()
{
char* cErrMsg;
int res = sqlite3_exec(pDB, "select * from user;", UserResult , 0 , &cErrMsg);

if (res != SQLITE_OK)
{
cout<<"select fail: "< return false;
}

return true;
}

编译成功后,将sqlite3.dll复制到SQLiteTest.exe同一目录下,运行SQLiteTest.exe。
运行结果:
add user success: zhao  18
add user success: qian 19
add user success: sun 20
add user success: li 21
delete user success: zhao
modify user success: sun 15
id = 2, name = qian, age = 19,
id = 3, name = sun, age = 15,
id = 4, name = li, age = 21,

5、 SQLite管理工具

可视化管理工具,推荐使用:SQLite Expert,见:http://www.sqliteexpert.com/。




推荐阅读
  • SQLite3是一个广泛使用的数据库,从linux,windows到安卓都有SQLite的应用。本文介绍SQLite3在windows上的编译。SQLite3提供了多种源代码的下载 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 解决Win10 1709版本文件共享安全警告问题
    每当Windows 10发布新版本时,由于兼容性问题往往会出现各种故障。近期,一些用户在升级至1709版本后遇到了无法访问共享文件夹的问题,系统提示‘文件共享不安全,无法连接’。本文将提供多种解决方案,帮助您轻松解决这一难题。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 在非MFC项目中集成和应用MFC库的功能与优势
    在非MFC项目中集成和应用MFC库,可以充分利用MFC提供的丰富功能和优势。本文探讨了如何在不同类型的C++工程中(如Win32控制台应用程序、Win32项目等)引入MFC库,详细介绍了集成方法及其带来的性能提升和开发效率的提高。通过实例分析,展示了在非MFC项目中使用MFC库的具体步骤和注意事项。 ... [详细]
  • ImimplementingacustomlexerinC++andwhenattemptingtoreadinwhitespace,theifstreamwont ... [详细]
  • Threadtowaitinfinitelyinaloopuntilaflagstatechange,thencallfunction.线程在循环中无限期等待,直到标志状 ... [详细]
  • 背景使用sqlite3的命令实现数据去重,与无效数据删除等操作。所有操作均封装在shellscript中。创建数据库邮件数据库:UserEmail.dbEmail表:TABLE_EM ... [详细]
  • JavaScript 页面卸载事件详解 (onunload)
    当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • Django 入门学习(3)
    在例4的基础上,我希望直接保存数据到数据库中。Django自带了一个sqlite的数据库,已经配置好了可以直接使用。使用方式和sqlalchemy类似,相当于一 ... [详细]
author-avatar
手机用户2502912197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有