SQLite的入门(之一)
来源:互联网 发布:plsql打开sql文件乱码 编辑:程序博客网 时间:2024/06/11 20:35
准备工作
下载相关文件。
- 文件1:sqlite-dll-win64-x64-3180000.zip
,包含sqlite3.def
和sqlite3.dll
- 文件2:sqlite-tools-win32-x86-3180000.zip
,包含sqlite3.exe
等shell工具。
- 文件3:sqlite-amalgamation-3180000.zip
,包含sqlite3.h
头文件。
生成lib文件
使用VS2015工具lib命令行,移动到def所在的文件夹并利用sqlite3.def
生成对应lib文件。命令如下:
lib /DEF:sqlite3.def /MACHINE:X64
新建一个数据库
在命令行中使用sqlite3.exe
,建立一个名为tbLzkila
的表,并保存到test.db
文件中:
sqlite> create table tbLzkila ...> ( ...> id INTEGER PRIMARY KEY AUTOINCREMENT, ...> name VARCHAR(64), ...> age INTERGER ...> );sqlite> .save test.db
新建一个工程
打开VS2015,新建一个win32控制台项目。把sqlite3.dll,sqlite3.h,sqlite3.lib
放入项目根文件夹下。然后在项目属性添加lib文件sqlite3.lib
。
测试代码
#include "stdafx.h"#include "sqlite3.h"#include <iostream>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 main(){ //打开路径采用utf-8编码 //如果路径中包含中文,需要进行编码转换 int nRes = sqlite3_open("E:\\__Dev\\SQLite\\sqlite-tools-win32-x86-3180000\\test.db", &pDB); if (nRes != SQLITE_OK) { cout << "Open database fail: " << sqlite3_errmsg(pDB); 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); system("pause"); return 0;}bool addUser(const string& sName, const string& sAge){ string strSql = ""; strSql += "insert into tbLzkila(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: " << cErrMsg << endl; return false; } else { cout << "add user success: " << sName.c_str() << "\t" << sAge.c_str() << endl; } return true;}bool deleteUser(const string& sName){ string strSql = ""; strSql += "delete from tbLzkila 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: " << cErrMsg << endl; return false; } else { cout << "delete user success: " << sName.c_str() << endl; } return true;}bool modifyUser(const string& sName, const string& sAge){ string strSql = ""; strSql += "update tbLzkila 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: " << cErrMsg << endl; return false; } else { cout << "modify user success: " << sName.c_str() << "\t" << sAge.c_str() << endl; } return true;}static int userResult(void *NotUsed, int argc, char **argv, char **azColName){ for (int i = 0; i < argc; i++) { cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << ", "; } cout << endl; return 0;}bool selectUser(){ char* cErrMsg; int res = sqlite3_exec(pDB, "select * from tbLzkila;", userResult, 0, &cErrMsg); if (res != SQLITE_OK) { cout << "select fail: " << cErrMsg << endl; return false; } return true;}
0 0
- SQLite的入门(之一)
- SQLite入门之一简单介绍
- sqlite的入门基础
- sqlite的Java应用-入门
- SQLite简单的入门操作
- Android SQLite的使用入门
- linux下的sqlite入门
- windows下编译SQLite和SQLite的入门用法(初步总结)
- SQLite入门介绍(一)
- SQLite入门介绍(二)
- SQLite入门介绍(三)
- 最快速的Github入门,没有之一(三)
- 最快速的Github入门,没有之一(二)
- 最快速的Github入门,没有之一(四)
- Java入门之一(下)
- 神经网络入门(连载之一)
- SQLITE入门
- SQLITE入门
- c++第五次实验
- 极简的dp代码
- Java设计模式笔记之解释器模式
- pyenv+virtualenv+virtualenvwrapper轻量级python环境管理
- 你好
- SQLite的入门(之一)
- c++第五次作业
- MVC在b/s系统中的应用
- HDOJ 1848 Fibonacci again and again(SG函数)
- NYoj 1242 Interference Signal&&2015第九届河南省acm程序设计大赛G题
- Integer类型与int的==比较
- Nrf51822 滴答时钟替代者 -- RTC
- 题三:二维数组查找
- Linux--RH134---unit 6 linux中常用的基础命令