这个代码是接着上次说的,要用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数据库的增删查改操作的更多相关文章

  1. SSM框架-MyBatis框架数据库的增删查改操作

    话不多说,在User.xml文件中主要写一下操作数据库的sql语句,增,删,查,改是最常见的数据库操作 User.xml文件下:

  2. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

  3. MongoDB数据库(二):增删查改

    MongoDB数据库的增删查改 1.插入数据 语法: db.集合名称.insert(document) db.table_name.insert({name:'gj',gender:1}) db.ta ...

  4. java实现简单的数据库的增删查改,并布局交互界面

        一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...

  5. 利用dbutils工具实现数据的增删查改操作(dbutis入门)

    一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...

  6. Mybatis基础配置及增删查改操作

    一.简介 平时我们都用JDBC访问数据库,除了需要自己写SQL之外,还必须操作Connection, Statement, ResultSet 这些其实只是手段的辅助类. 不仅如此,访问不同的表,还会 ...

  7. PHP与MYSQL结合操作——文章发布系统小项目(实现基本增删查改操作)

    php和mysql在一起几十年了,也是一对老夫老妻了,最近正在对他们的爱情故事进行探讨,并做了一个很简单的小东西——文章发布系统,目的是为了实现mysql对文章的基本增删查改操作 前台展示系统有:文章 ...

  8. 在Eclipse上实现简单的JDBC增删查改操作

    在Javaweb的学习里,学到了如何完成简单的增删查改操作,在这里撰写一篇文章以便自己整理回忆. 首先要建立一些包和导入一些文件.建一些类.具体框架如图  编写Product类 public clas ...

  9. [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版

    (课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...

随机推荐

  1. 8 HTML DOM 元素的查找与改变&改变CSS样式&HTML事件

    HTML DOM(Document Object Model)文档对象模型 当网页被加载时,浏览器会创建页面的文档对象模型. HTMLDOM 定义了用于HTML的一系列标准的对象.通过DOM,你可以访 ...

  2. K8s / Kubernetes 从入门到入门

    Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是k ...

  3. Windows下载编译Qt5 Gui

    安装工具 Python 这个安装的时候没记录下来,网上查一下,大把, 就不补了. ActivePerl https://www.cnblogs.com/dilex/p/10591579.html 下载 ...

  4. Python 基础之集合相关操作与函数和字典相关函数

    一:集合相关操作与相关函数 1.集合相关操作(交叉并补) (1)intersection() 交集 set1 = {"one","two","thre ...

  5. 查漏补缺之slice

    interviewer:说一说slice interviewee: 主要包括以下几点 slice and array slice的底层数据结构 length和capacity 切片的capacity的 ...

  6. 暑假周进度报告(三)-------版本过高后续问题处理,eclipse编译运行MapReduce以及Hadoop学习

    问题一:Hadoop版本太高 卸载Hadoop3.2.0 我改安装了Hadoop 2.7.7 如果没有权限下载.可以采用如下方式: 卸载完成以后返回原目录即可 后面的jdk卸载也可以采用这种方式. 按 ...

  7. 用Total Commander替换windos默认资源管理器的方法

    Total Commander(简称TC)是一个功能强大的资源管理器. TC本身没有自带的替换windows资源管理器的功能,就必须自己动手解决了. 第一步先Google一下看有没有答案.当时搜出了不 ...

  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:表示一个警告的操作

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. ajax请求Controller,返回信息乱码问题

    参考:https://blog.csdn.net/hgg923/article/details/53610548 @RequestMapping(value = "changeMobile& ...

  10. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...