代码:Database2.7z

Database.h:

 #pragma once

 #include<string>
#include<vector>
#include<Windows.h>
#include<tchar.h>
#include<iostream> #include"sqlite3.h" using namespace std; class Database{
public:
Database();
~Database();
bool initDatabase();//打开数据库,成功返回true
bool createTable(std::string tablename);//在数据库中创建一个表
void showData();//输出数据库中的数据
bool insertDatabase(string tablename, string name, string number);
bool queryDatabase(string tableName);
void dropTable(string tableName);
void deleteData(string tableName);
void changeData(string tableName); private:
sqlite3* db;
sqlite3_stmt* stmt;
}; static int callback(void* data, int argc, char** argv, char** azColName);

Database.cpp:

 #pragma once

 #include"Database.h"

 vector<string> vstr;
vector<string> vnumber; static int callback(void* data, int argc, char** argv, char** azColName){
for (int i = ; i < argc; i++){
switch (i + ){
case :
break;//id已弃用
case :
vstr.push_back(string(argv[i])); break;
case :
vnumber.push_back(string(argv[i])); break;
default:
break;
}
}
return ;
} Database::Database(){ } Database::~Database(){ } bool Database::initDatabase(){
int rc = sqlite3_open("TestDB.db", &db);
if (rc){
MessageBox(NULL, _T("数据库打开失败!"), , );
return false;
}
return true;
} bool Database::createTable(std::string tablename){
string sql = "CREATE TABLE TEST ( " \
"NAME TEXT NOT NULL," \
"NUMBER TEXT NOT NULL)";
char* zErrMsg = ;
int rc = sqlite3_exec(db, sql.c_str(), callback, , &zErrMsg);
if (rc != SQLITE_OK){
return false;
}
return true;
} void Database::showData(){
if (vstr.size() == ){
cout << "数据库中没有数据!\n";
return;
}
for (vector<string>::iterator i = vstr.begin(); i != vstr.end(); i++){
cout << i->data() << " ";
}
cout << "\n";
for (int i = ; i < vnumber.size(); i++){
cout << vnumber[i] << " ";
}
cout << "\n";
} bool Database::insertDatabase(string tablename, string name, string number){
string sql = "INSERT INTO " +
tablename +
" ( NAME, NUMBER)" +
" VALUES('" +
name +
"','" +
number +
"');";
char* zErrMsg = ;
int rc = sqlite3_exec(db, sql.c_str(), callback, , &zErrMsg);
if (rc != SQLITE_OK){
MessageBox(NULL, sql.c_str(), NULL, NULL);
return false;
}
return true;
} bool Database::queryDatabase(string tableName){
string sql = "SELECT * FROM ";
sql += tableName;
char* zErrMsg = ;
int rc = sqlite3_exec(db, sql.c_str(), callback, , &zErrMsg);
return true;
} void Database::dropTable(string tableName){
string sql = "DROP TABLE ";
sql += tableName;
char* zErrMsg = ;
int rc = sqlite3_exec(db, sql.c_str(), callback, , &zErrMsg);
} void Database::deleteData(string tableName){
string sql = "DELETE FROM ";
sql += tableName;
char* zErrMsg = ;
int rc = sqlite3_exec(db, sql.c_str(), callback, , &zErrMsg);
} void Database::changeData(string tableName){
string sql = "UPDATE TEST SET NAME = 'MYTEST'";
char* zErrMsg = ;
int rc = sqlite3_exec(db, sql.c_str(), callback, , &zErrMsg);
}

main.cpp:

 #include"Database.h"

 int main(){
Database* db = new Database;
db->initDatabase();
db->createTable("");
db->insertDatabase("TEST", "test", "");
db->changeData("vv");
db->queryDatabase("TEST");
db->showData();
db->deleteData("TEST");
db->dropTable("TEST");
delete db;
system("pause");
return ;
}

vs2013 SQLite数据库增删改查的更多相关文章

  1. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  2. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  3. IOS sqlite数据库增删改查

    1.简单介绍 简单封装sqlite数据库操作类 BaseDB 用于完毕对sqlite的增删改查.使用前先导入libsqlite3.0.dylib库 2.BaseDB.h // // BaseDB.h ...

  4. 使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)

    在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLi ...

  5. SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串 ...

  6. Android SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...

  7. SQLite数据库增删改查

    一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data ...

  8. 通过API函数来控制SQLite数据库增删改查

    person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法. package com.xh.tx.dao; import and ...

  9. 通过Sql语句控制SQLite数据库增删改查

    person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法. package com.xh.tx.dao; import jav ...

随机推荐

  1. 清除定时器 和 vue 中遇到的定时器setTimeout & setInterval问题

    2019-03更新 找到了更简单的方法,以setinterval为例,各位自行参考 mounted() { const that = this const timer = setInterval(fu ...

  2. Dart语言学习(八) dynamic

    dynamic 表示是动态的,数据类型是指任意类型 var a; a = ; a = "Dart"; print(a); dynamic b = ; b = "JavaS ...

  3. SpringMVC重定向(redirect)传参数,前端EL表达式接受值

    由于重定向相当于2次请求,所以无法把参数加在model中传过去.在上面例子中,页面获取不到msg参数.要想获取参数,可以手动拼url,把参数带在后面.Spring 3.1 提供了一个很好用的类:Red ...

  4. mapreduce课上实验

    今天我们课上做了一个关于数据清洗的实验,具体实验内容如下: 1.数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中: 2.数据处理: ·统计最受欢迎的视频/文章的Top10访问次数 (v ...

  5. opencv python:图像二值化

    import cv2 as cv import numpy as np import matplotlib.pyplot as plt # 二值图像就是将灰度图转化成黑白图,没有灰,在一个值之前为黑, ...

  6. 国密SM9算法C++实现(Linux)

    首先参考 Linux下编译并使用miracl密码库 该博文在linux下编译Miracl库. 编译完了,自然是要用的,下面介绍两种在C程序中使用miracl库的方法. 方法一: 1. 源码编译完后的必 ...

  7. dfs(迷宫)

    问题 J: 棋盘行走 时间限制: 1 Sec  内存限制: 128 MB[命题人:admin] 题目描述 小Biu在玩一个棋盘游戏,这个游戏给出一个n*m的棋盘,并且每个点上有一个棋子,棋子的颜色 用 ...

  8. SpringCloud全家桶学习之一阶段总结(一)

    一.概述 前几篇小博客记录了我学习SpringCloud组件的过程,并与工作中所用的Dubbo框架做了一点比较,基本组件:Eureka.Ribbon.Hystrix.Feign.Zuul.Config ...

  9. 记C++中发现的隐式转换问题

    #include <iostream> #include <string> using std::cin; using std::cout; using std::endl; ...

  10. ES6:字面量的增强写法

    以前对象字面量的写法: 属性的增强写法: ES6中可以写成: 方法的增强写法 ES6中可以写成: ~~~~~ END ~~~~~