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 ...
随机推荐
- 关于java程序在运行时出现a java exception has occured时解决方法
错误截图: 出现情况原因分析: 1.环境没有配置好,配置java环境变量: 参考 检查是否正确,java javac,可以尝试重新 2.查看使用的jdk版本是否存在版本问题: 例如jdk1.7对中文的 ...
- 夯实Java基础(二十四)——Java8新特征之Optional类
1.概述 对于Java程序员来说,到目前为止出现次数最多的应该是NullpointException,它是导致Java应用程序失败的最常见原因.之前处理空指针我们必须先通过条件先去判断,然后再确认是否 ...
- python爬虫(五) ProxyHandler处理器
ProxyHandler处理器 一.如果我们在一段时间内用某个ip地址访问了一个网站次数过多,网站就检测到不正常,就会禁止这个ip地址的访问.所以我们可以设置一些代理服务器,每段时间换个代理,就算ip ...
- SpringMvc 初步配置
spring-aop.jarspring-bean.jarspring-context.jarspring-core.jarspring-web.jarspring-webmvc.jarcommons ...
- Spark入门:第2节 Spark集群安装:1 - 3;第3节 Spark HA高可用部署:1 - 2
三. Spark集群安装 3.1 下载spark安装包 下载地址spark官网:http://spark.apache.org/downloads.html 这里我们使用 spark-2.1.3-bi ...
- LCS(最长公共子序列)
这个问题很有意思,在生物应用中,经常需要比较两个(或多个)不同生物体的DNA片段.例如,某种生物的DNA可能为S1 = ACCGGTCGAGTGCGCGGAAGCCGGCCGAA,S2 = GTCGT ...
- 微信红包系统设计 & 优化
微信红包系统设计 & 优化 浏览次数:151次 腾讯大讲堂 2015年04月02日 字号: 大 中 小 分享到:QQ空间新浪微博腾讯微博人人网豆瓣网开心网更多0 编者按:经过2014年一年 ...
- 最新获取SkyDrive音乐外链mp3地址方法20131003
最新获取SkyDrive音乐外链方法20131003在文章底部更新,欢迎使用! 这已经是第三次写获取SkyDrive音乐外链mp3地址方法的文章了,因为第一次.第二次都失效了.三篇文章都有个共同点,都 ...
- sqlserver 面试题
1. --是查询A(ID,Name)表中第11至20条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下: SELECT TOP 10 * FROM dbo.Employee WHERE E ...
- 十 Restful风格
1 restful风格化,url上的参数通过{}点符绑定,RequestMapping("item/{id}") 2 点位符参数名与方法参数名不一致时,通过@PathVariabl ...