这个代码是接着上次说的,要用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. 十一 Spring的AOP开发的相关术语

    SpringAOP简介: AOP思想最早是由AOP联盟组织提出的.Spring使用这种思想最好的框架. Spring的AOP有自己实现的方式,但是非常繁琐.AspectJ是一个AOP框架,Spring ...

  2. 吴裕雄--天生自然ORACLE数据库学习笔记:表分区与索引分区

    create table ware_retail_part --创建一个描述商品零售的数据表 ( id integer primary key,--销售编号 retail_date date,--销售 ...

  3. 如何往gitlab/github上游贡献代码

    Git 是一个开源的分布式版本控制系统,它能够记录每一次改动. 一些概念 仓库:git 中以仓库为单位:每个项目对应一个仓库,如 /eayuntest/Rally./eayuntest/stack 是 ...

  4. [CEOI 2004]锯木厂选址

    Description 题库链接 从山顶上到山底下沿着一条直线种植了 \(n\) 棵老树.当地的政府决定把他们砍下来.为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂. 木材只能朝山下运.山脚下有一个 ...

  5. 技术|Android安装包极限优化

    版权声明 1.本文版权归原作者所有,转载需注明作者信息及原文出处. 2.本文作者:赵裕(vimerzhao),永久链接:https://github.com/vimerzhao/vimerzhao.g ...

  6. JAVA项目开发之文档篇

    转自链接:https://blog.csdn.net/Zonzereal/article/details/76704455

  7. windows 创建软连接

    mklink /d D:\www\child.ivyoffline\common\components\policy D:\www\child.ivyoffline\appOA\protected\c ...

  8. 还在用逆向工程?太Low了,试试通用Mapper吧!

    什么是通用Mapper? 通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查. 什么是通用mapper,一句话简单说,它就是个辅助mybatis极简单表开发的组件.它不是为 ...

  9. 带你了解后渗透工具Koadic

    前言: 在朋友的博客上看到推荐的一款工具Koadic,我接触了以后发现很不错这款工具的强大之处我觉得就是拿到shell后的各种模块功能,我就自己写出来发给大家看看吧. 首先把项目克隆到本地: 项目地址 ...

  10. Linux和云供应商Red Hat被IBM以34亿美元的价格收购

    导读 今天的主题包括IBM以340亿美元收购Red Hat,人性化是使人工智能成功的关键.两家公司于10月28日宣布,IBM正以340亿美元的价格收购Linux和云技术供应商Red Hat,以期改变云 ...