#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的更多相关文章

  1. RT/Metro商店应用如何调用SQLite数据库

    RT/Metro商店应用如何调用SQLite数据库 使用前,要安装:SQLite for Windows Runtime (Windows 8.1)(一个VS插件).还有Visual C++ Runt ...

  2. C#调用SQLite报错:无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块

    C#调用SQLite数据库,有些情况下会报以下这个错误: 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块 实际上程序目录中是存在SQLite.Interop.dll这个文 ...

  3. 关于.NET C#调用Sqlite的总结二

    关于.NET C#调用Sqlite的总结一 在上一篇中我一直疑惑为什么我在使用多层架构进行开发时总是会报些莫名的错误,难道要使用Sqlite就不能分层吗?只能将UI.业务逻辑.数据访问统统都要写在一层 ...

  4. 关于.NET C#调用Sqlite的总结一

    --前记 由于自己的密码太多又不容易记住,经常性的会忘记.所以想找个管理软件管理下,可用网上下载的担心不安全.于是自己开始动手写个属于自己的密码管理软件. 因为自己一直做的是WEB开发,对WPF懂的不 ...

  5. 【转】Phonegap离线调用SQLite数据库文件

    按:不可多得的好文章,转过来以免源丢失 文章来源:http://liuwei.co/index.php/default/The-quickest-way-to-execute-many-sql-for ...

  6. Android调用Sqlite数据库时自动生成db-journal文件的原因

    数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...

  7. 【转】Android调用Sqlite数据库时自动生成db-journal文件的原因

    数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...

  8. C#调用SQlite常见问题汇总

    最近在做SQLite开发,开发环境是VS2010+ SQLite Ado.Net data Provider.这套Data Provider程序是基于System.Data.SQLite 1.0.66 ...

  9. python调用sqlite

    参考资料:https://www.liaoxuefeng.com/wiki/1016959663602400/1017801751919456  https://www.cnblogs.com/lia ...

随机推荐

  1. AIX 6.1创建逻辑卷并挂载【smitty】

    1.创建卷组 #mkvg  -y   datavg     hdisk2   hdisk3   #smitty   vg

  2. python + excel 使用

    为了提高工作效率(偷懒),用python去解决. 工作需要,需要将excel文件转化为csv文件,要是手工的一个个去转换,每个sheet页不但有几十个字段,中间还夹杂着空格,然后按顺序转换成csv文件 ...

  3. linux批量设置部分文件与文件夹权限

      批量设置web目录下文件.文件夹名为sitemap.xml.sitemap 属性为777 cd /www/web find ./ -name 'sitemap' -exec chmod -R 77 ...

  4. UILabel的行间距,字间距处理

    啥都不说了,直接上代码,做了一个Category #import <UIKit/UIKit.h> @interface UILabel (ChangeLineSpaceAndWordSpa ...

  5. 【洛谷P1919】A*B Problem升级版

    题目大意:rt 题解:将长度为 N 的大整数看作是一个 N-1 次的多项式,利用 FFT 计算多项式的卷积即可. 代码如下 #include <bits/stdc++.h> using n ...

  6. python urljoin

    使用urllib的urljoin()拼接两个地址 urlljoin的第一个参数是基础母站的url,第二个是需要拼接成绝对路径的url. from urllib import parse url1 = ...

  7. python接口自动化二(发送post请求)

    前言 一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行 请求报头 消息主体 HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编 ...

  8. 使用swagger生成API说明文档

    使用swagger生成API说明文档本文由个人总结,如需转载使用请标明原著及原文地址没有导出!!!!!不要整天给我留言导出呢,那个是你们百度的时候下面的推荐文章带的关键字,要做导出从swagger取数 ...

  9. BZOJ 3545: [ONTAK2010]Peaks 启发式合并 + 离线 + Splay

    Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问询 ...

  10. SQL create file遇到操作系统错误5拒绝访问

    当在sql server 2014创建一个数据库时出现错误:尝试打开或创建物理文件 'G:\Test.mdf' 时,CREATE FILE 遇到操作系统错误 5(拒绝访问). 原因及解决方法如下: 这 ...