C++连接sqlite数据库的增删查改操作
这个代码是接着上次说的,要用VS2013操作数据库,首先要配置好环境,创建好数据库表等。
不明白的翻我前面2篇看看~~~
关于前面的用到的goto 语句,这个我也是参考其他博主写的,现在我注释掉了,毕竟goto咱也不懂,哈哈哈~~~
下面给上我的代码,不出意外直接复制粘贴可以使用:
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "sqlite3.h"
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std; sqlite3 * pDB = NULL; //查找
bool SelectUser(); //增加
bool AddUser(const string& sName, const string& sFenshu); //删除
bool DeleteUser(const string& sName); //修改
bool ModifyUser(const string& sName, const string& sFenshu); int _tmain(int argc, _TCHAR* argv[])
{
//打开路径采用utf-8编码
//如果路径中包含中文,需要进行编码转换
int nRes = sqlite3_open("D:\\sqlite\\fuck.db;", &pDB);
if (nRes != SQLITE_OK)
{
cout << "Open database fail: " << sqlite3_errmsg(pDB);
//goto QUIT;
sqlite3_close(pDB);
}
else
{
system("color A");
cout << "打开数据库成功!" << endl;
cout << "**************************C++连接sqlite数据操作**************************" << endl;
cout << "1.查询" << endl;
cout << "2.添加" << endl;
cout << "3.删除" << endl;
cout << "4.修改" << endl;
cout << "0.退出" << endl;
cout << "**************************C++连接sqlite数据操作**************************" << endl;
cout << "请选择你需要的操作" << endl;
} int a;
char name[];
char fenshu[];
while (true)
{
cin >> a;
switch (a){
case :
cout << "你选择了查询" << endl;
SelectUser();
cout << "**************************请继续选择操作或/退出**************************" << endl;
break;
case :
cout << "你选择了添加" << endl;
cout << "*******************请输入你要添加的信息如:xiaoming,18*******************" << endl; //cin >> id;
cout << "name:" << endl;
scanf("%s",&name);
cout << "fenshu:" << endl;
scanf("%s",&fenshu);
//cout <<name << fenshu << endl;
if (AddUser(name,fenshu)){ cout << "添加成功!" << endl;
cout << "**************************请继续选择操作或/退出**************************" << endl;
}
break;
case :
cout << "你选择了删除" << endl;
cout << "********************请输入你要删除的信息如:xiaoming*********************" << endl;
//删除
cout << "name:" << endl;
scanf("%s", &name);
if (DeleteUser(name))
{
cout << "信息删除成功!" << endl;
cout << "**************************请继续选择操作或/退出**************************" << endl;
} break;
case :
cout << "你选择了修改" << endl;
cout << "*******************请输入你要修改的信息如:xiaoming,18*******************" << endl;
//cin >> id;
cout << "name:" << endl;
scanf("%s", &name);
cout << "fenshu:" << endl;
scanf("%s", &fenshu);
if (ModifyUser(name,fenshu))
{
cout << "信息修改成功!" << endl;
cout << "**************************请继续选择操作或/退出**************************" << endl;
}
break;
default:
cout << "你选择了退出" << endl;
cout << "goodbye" << endl;
exit(); } } //查找
/*if (!SelectUser())
{ goto QUIT;
}*/ QUIT:
sqlite3_close(pDB); return ;
} static int UserResult(void *NotUsed, int argc, char **argv, char **azColName)
{ for (int i = ; i < argc; i++)
{ cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << ", ";
}
//sqlite3_free_table(azColName);
cout << endl;
return ;
} bool SelectUser()
{
char* cErrMsg; // int res = sqlite3_exec(pDB, "select student.id, student.name,score.fenshu from student, score WHERE student.id= score.id;", UserResult, 0, &cErrMsg);
int res = sqlite3_exec(pDB, "select * from score", UserResult, , &cErrMsg); if (res != SQLITE_OK)
{
cout << "select fail: " << cErrMsg << endl;
return false;
} return true;
} //添加数据
bool AddUser( const string& sName, const string& sFenshu)
{
string strSql = "";
strSql += "insert into score(name,fenshu)";
strSql += "values('";
strSql += sName;
strSql += "',";
strSql += sFenshu;
strSql += ");"; char* cErrMsg;
int nRes = sqlite3_exec(pDB, strSql.c_str(), , , &cErrMsg);
if (nRes != SQLITE_OK)
{
cout << "add score fail: " << cErrMsg << endl;
return false;
}
else
{
cout << "add score success: " << sName.c_str() << "\t" << sFenshu.c_str() << endl;
} return true;
} //删除数据
bool DeleteUser(const string& sName)
{
string strSql = "";
strSql += "delete from score where name='";
strSql += sName;
strSql += "';"; char* cErrMsg;
int nRes = sqlite3_exec(pDB, strSql.c_str(), , , &cErrMsg);
if (nRes != SQLITE_OK)
{
cout << "delete score fail: " << cErrMsg << endl;
return false;
}
else
{
cout << "delete score success: " << sName.c_str() << endl;
} return true;
} //修改数据
bool ModifyUser(const string& sName, const string& sFenshu)
{
string strSql = "";
strSql += "update score set fenshu =";
strSql += sFenshu;
strSql += " where name='";
strSql += sName;
strSql += "';"; char* cErrMsg;
int nRes = sqlite3_exec(pDB, strSql.c_str(), , , &cErrMsg);
if (nRes != SQLITE_OK)
{
cout << "modify score fail: " << cErrMsg << endl;
return false;
}
else
{
cout << "modify score success: " << sName.c_str() << "\t" << sFenshu.c_str() << endl;
} return true;
}
说明:score 是我自己 在fuck.db创建的表,你们可以自己创建,创建教程前面也有~~
运行界面:

C++连接sqlite数据库的增删查改操作的更多相关文章
- SSM框架-MyBatis框架数据库的增删查改操作
话不多说,在User.xml文件中主要写一下操作数据库的sql语句,增,删,查,改是最常见的数据库操作 User.xml文件下:
- Java连接MySQL数据库及简单的增删查改操作
主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...
- MongoDB数据库(二):增删查改
MongoDB数据库的增删查改 1.插入数据 语法: db.集合名称.insert(document) db.table_name.insert({name:'gj',gender:1}) db.ta ...
- java实现简单的数据库的增删查改,并布局交互界面
一.系统简介 1.1.简介 本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- Mybatis基础配置及增删查改操作
一.简介 平时我们都用JDBC访问数据库,除了需要自己写SQL之外,还必须操作Connection, Statement, ResultSet 这些其实只是手段的辅助类. 不仅如此,访问不同的表,还会 ...
- PHP与MYSQL结合操作——文章发布系统小项目(实现基本增删查改操作)
php和mysql在一起几十年了,也是一对老夫老妻了,最近正在对他们的爱情故事进行探讨,并做了一个很简单的小东西——文章发布系统,目的是为了实现mysql对文章的基本增删查改操作 前台展示系统有:文章 ...
- 在Eclipse上实现简单的JDBC增删查改操作
在Javaweb的学习里,学到了如何完成简单的增删查改操作,在这里撰写一篇文章以便自己整理回忆. 首先要建立一些包和导入一些文件.建一些类.具体框架如图 编写Product类 public clas ...
- [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版
(课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...
随机推荐
- navicat12破解详细教程
以管理员身份运行此注册机: 运行注册机 打开注册机后,1) Patch勾选Backup.Host和Navicat v12,然后点击Patch按钮: 默认勾选 找到Navicat Premium 12安 ...
- [蓝桥杯2015初赛]生命之树(树状dp)
在X森林里,上帝创建了生命之树.他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值.上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 ...
- 夯实Java基础(二十)——JAVA正则表达式
1.为什么要用正则表达式 首先我们先来做一道题目:判断一个字符串是否由数字组成.代码示例如下: public class Test { public static void main(String[] ...
- python爬虫(九) requests库之post请求
1.方法: response=requests.post("https://www.baidu.com/s",data=data) 2.拉勾网职位信息获取 因为拉勾网设置了反爬虫机 ...
- Qt编译Curl
1.下载Curl,下载地址:https://curl.haxx.se/download.html,windows下载.zip压缩包,解压到E盘. 2.在”开始菜单“—>”所有程序“->”Q ...
- Js为Dom元素绑定事件须知
为异步加载的Dom 元素绑定事件必须在加载完成之后绑定: $('body').load('LearnClickBinding.ashx');$('a').click(function () { ale ...
- 分段控制器UISegmentedControl的使用、同一个控制器中实现多个View的切换、addChildViewController等方法的使用
本文先讲解简单的分段控制器UISegmentedControl的使用,然后具体讲解它最常使用的场景:同一个控制器中实现多个View的切换. 文章构思: 1.先直接讲解一张UI效果图的四种实现方式. 2 ...
- URL构成及各个协议默认端口
url的构成:一般来说,http请求都会和URL地址有关,对于url来说一般由下面5个部分构成 .协议:通常就是第一个冒号之前的内容常见协议:http,https(http+ssl),ftp,ssh, ...
- WebGL 渲染管线
WebGL 是以 OpenGL ES 2.0 为基础的 3D 编程应用接口. WebGL依赖GPU的图形渲染能力,即依赖硬件设备,所以其渲染流程和GPU内部的渲染管线是相符的.渲染管线的作用是将3D模 ...
- 学习:java原理—反射机制
一.什么是反射:反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提 出很快引发了计算机科学领域关于应用反射性的研究.它首先被程 ...