c++ 调用 sqlite
#include <iostream>
#include "sqlite3.h" using namespace std; void dbTest()
{
#pragma region 打开或创建数据库 /*打开或创建的数据库实例句柄*/
sqlite3 *db = NULL; /*数据库文件的路径及文件名*/
const char * path = "./sqlcipher.db";
/*根据文件路径打开数据库连接。如果数据库不存在,则创建。数据库文件的路径必须以C字符串传入*/
int result = sqlite3_open_v2(path, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL); if (result == SQLITE_OK)
cout << "打开数据库连接成功" << endl;
else
cout << "打开数据库连接失败" << endl; #pragma endregion #pragma region 创建数据库表 const char *sqlCreateTable = "CREATE TABLE [t1](id integer PRIMARY KEY AUTOINCREMENT UNIQUE, name varchar);";
sqlite3_stmt *stmtCreateTable = NULL; /*检查语句合法性,-1代表系统会自动计算SQL语句的长度*/
result = sqlite3_prepare_v2(db, sqlCreateTable, -, &stmtCreateTable, NULL); if (result == SQLITE_OK)
{
/*执行该SQL语句*/
sqlite3_step(stmtCreateTable);
cout << "CREATE TABLE 语句执行成功" << endl;
}
else
{
cout << "CREATE TABLE 语句语法不正确:" << sqlite3_errmsg(db) << endl;
} sqlite3_finalize(stmtCreateTable); #pragma endregion #pragma region 向数据库中插入数据 const char *sqlInsert = "INSERT INTO t1(name) VALUES('张三'); ";
sqlite3_stmt *stmtInsert = NULL; /*检查语句合法性,-1代表系统会自动计算SQL语句的长度*/
result = sqlite3_prepare_v2(db, sqlInsert, -, &stmtInsert, NULL); if (result == SQLITE_OK)
{
/*执行该SQL语句*/
sqlite3_step(stmtInsert);
cout << "INSERT 语句执行成功" << endl;
}
else
{
cout << "INSERT 语句语法不正确:" << sqlite3_errmsg(db) << endl;
} sqlite3_finalize(stmtInsert); #pragma endregion #pragma region 从数据库中查询数据 const char *sqlQuery = "SELECT * FROM t1;";
sqlite3_stmt *stmtQuery = NULL; /*检查语句合法性,-1代表系统会自动计算SQL语句的长度*/
result = sqlite3_prepare_v2(db, sqlQuery, -, &stmtQuery, NULL);
if (result == SQLITE_OK)
{
/*执行该SQL语句*/
while (sqlite3_step(stmtQuery) == SQLITE_ROW)
{
// 取出第0列字段的值
int id = sqlite3_column_int(stmtQuery, ); // 取出第1列字段的值
const unsigned char *name = sqlite3_column_text(stmtQuery, ); //输出相关查询的数据
cout << "id:" << id << ", name: " << name << endl;
}
}
else
{
cout << "SELECT 语句语法不正确:" << sqlite3_errmsg(db) << endl;
} sqlite3_finalize(stmtQuery); #pragma endregion sqlite3_close(db);
} int main(int argc, char *argv[])
{
dbTest(); char sz[] = "End !";
cout << sz << endl;
return ;
}
c++ 调用 sqlite的更多相关文章
- RT/Metro商店应用如何调用SQLite数据库
RT/Metro商店应用如何调用SQLite数据库 使用前,要安装:SQLite for Windows Runtime (Windows 8.1)(一个VS插件).还有Visual C++ Runt ...
- C#调用SQLite报错:无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块
C#调用SQLite数据库,有些情况下会报以下这个错误: 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块 实际上程序目录中是存在SQLite.Interop.dll这个文 ...
- 关于.NET C#调用Sqlite的总结二
关于.NET C#调用Sqlite的总结一 在上一篇中我一直疑惑为什么我在使用多层架构进行开发时总是会报些莫名的错误,难道要使用Sqlite就不能分层吗?只能将UI.业务逻辑.数据访问统统都要写在一层 ...
- 关于.NET C#调用Sqlite的总结一
--前记 由于自己的密码太多又不容易记住,经常性的会忘记.所以想找个管理软件管理下,可用网上下载的担心不安全.于是自己开始动手写个属于自己的密码管理软件. 因为自己一直做的是WEB开发,对WPF懂的不 ...
- 【转】Phonegap离线调用SQLite数据库文件
按:不可多得的好文章,转过来以免源丢失 文章来源:http://liuwei.co/index.php/default/The-quickest-way-to-execute-many-sql-for ...
- Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- 【转】Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- C#调用SQlite常见问题汇总
最近在做SQLite开发,开发环境是VS2010+ SQLite Ado.Net data Provider.这套Data Provider程序是基于System.Data.SQLite 1.0.66 ...
- python调用sqlite
参考资料:https://www.liaoxuefeng.com/wiki/1016959663602400/1017801751919456 https://www.cnblogs.com/lia ...
随机推荐
- System.Windows.Forms.Application.DoEvents();
关于Application.DoEvents()的小研究 在MSDN中的备注是: 当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件.该窗体在每次处理事件时,均将处理与该事件关联的 ...
- 我来说说XML文件中的xmlns、xmlns:xsi和xsi:schemaLocation、dtd文件的具体含义
文章摘自:https://yq.aliyun.com/articles/40353 http://www.cnblogs.com/zhao1949/p/5652167.ht ...
- feign请求写法
@FeignClient(value = "test", url = "${proxy.srvs.test:}") public interface ISubS ...
- 解决:java compiler level does not match the version of the installed java project facet错误
java compiler level does not match the version of the installed java project facet错误的解决 因工作的关系,Eclip ...
- Redis数据类型之散列表
Redis五大数据类型以及操作 目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字 ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
- 【Linux】CentOS6上mysql5.7安装
1.下载安装yum源 根据系统下载yum源 https://dev.mysql.com/downloads/repo/yum/ rpm -ivh xxxxx.rpm 2.修改yum源 vim /etc ...
- 对浏览器如何计算CSS的研究---------------引用
1. 加载CSS 在构建DOM的过程中,如果遇到link的标签,当把它插到DOM里面之后,就会触发资源加载——根据href指明的链接: 上面的rel指明了它是一个样式文件.这个加载是异步,不会影响DO ...
- pyinstaller打包的exe太大?你需要嵌入式python玄学 探索篇
上篇我们讲到pip的安装以及普通库用pip的安装方法 CodingDog:pyinstaller打包的exe太大?你需要嵌入式python玄学 拓展篇zhuanlan.zhihu.com 问题纷沓而 ...
- springboot(二).springboot整合logback用于日志输出
springboot整合logback用于日志输出 我们项目的基本框架已经完成,http请求已经可以访问,现在给我们的框架添加日志记录的功能并能将每天的记录记录到文件中去 在这里,我们使用logbac ...