代码: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. 【做题笔记】P2251 质量检测

    一看题就知道是线段树裸题了.可是,对于每个 \(i\) ,对应的 \(Q\) 序列的下标是多少呢?应该查询的区间又是什么呢? 找规律: \(i\ \ \ \ \ \ \ \ m\) \(1\ \Rig ...

  2. P&R 2

    Floorplan: 要做好floorplan需要掌握哪些知识跟技能? 通常,遇到floorplan问题,大致的debug步骤跟方法有哪些? 如何衡量floorplan的QA? Floorplan是后 ...

  3. LeetCode日常小习题

    LeetCode练习题: 1.给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入 ...

  4. H2知识小结

    1.官网: http://www.h2database.com/html/main.html file:///E:/Develop/H2/docs/html/tutorial.html#web_app ...

  5. c# Linq List<T>去除其中重复的项

    //要去重的 list<T> listTest: var resultlist= listTest.GroupBy(p =>p.Id).Select(g => g.First( ...

  6. gitlab的搭建与汉化

    gitlab的搭建:内存最好2G以上 yum -y install curl unzip policycoreutils git wget         安装相关依赖包 所有gitlab rpm包的 ...

  7. about Base64

    用webservice传送文件的时候发现,如果发送的文件中有0x00字符,会被认为是字符串结尾,后面的内容就发送不过去,因此需要对不是纯文本格式的文件做BASE64编码,这样文件中就不会有0x00这样 ...

  8. MyBatis逆向工程的使用(非插件方式)

    一.概述 MyBatis是目前流行的优秀持久层框架,其逆向工程更是大大缩减了开发时间.所谓逆向工程,指的是mybatis根据数据库设计好的表,自动生成对应model.mapper及mapper.xml ...

  9. 关于 checkbox 的一些操作

    获取checkbox选中的状态 $("#checkbox").is(":checked"); 设置 checkbox 的状态 $("#checkbox ...

  10. Move-to-front(MTF) and Run-lenght encoding(RLE) algorithms

    mtf算法(关于该算法:https://www2.cs.duke.edu/csed/algoprobs/beta/bw1.html): #include <stdio.h> #includ ...