vc++ sqlite3 增删改插 例子

来源:互联网 发布:一年级体测数据 编辑:程序博客网 时间:2024/06/05 21:53


项目demo_sqlite下载地址

(项目中的代码与文章中贴出的代码有小差异,均可使用,文章中的是最新的)

http://download.csdn.net/download/prg1986/4953824


下载sqlite

去www.sqlite.org下载sqlite-amalgamation-*.zip、sqlite-dll-win32-x86-*.zip


本文中将使用的简称
sqlite-amalgamation-3071501.zip : sqlite-amalgamation.zip
sqlite-dll-win32-x86-3071501.zip : sqlite-dll.zip
demo_sqlite_ciud_using_vcpp : demo_sqlite

项目IDE版本
vs2003

生成sqlite3.lib
运行"\MicrosoftVisualStudio.NET2003\Common7\Tools\vsvars32.bat"(即"Microsoft Visual Studio .NET 2003" -> "Visual Studio .NET 工具" -> "Visual Studio .NET 2003 命令提示"), 到目录sqlite-dll下执行以下命令:
"lib /def:sqlite3.def /machine:ix86"
即可生成sqlite3.lib

需要的文件
sqlite-amalgamation\sqlite3.h
sqlite-dll\sqlite3.lib

在项目demo_sqlite中需要使用sqlite3.lib和sqlite3.h

项目demo_sqlite依赖的文件的存放路径

demo_sqlite\sqlite\
sqlite3.h
sqlite3.lib

在项目demo_sqlite中使用sqlite3.lib和sqlite3.h
用vs2003打开项目demo_sqlite, 做以下配置:
项目.属性."C/C++".常规.附加包含目录
".\sqlite"
项目.属性.链接器.常规.附加库目录
".\sqlite"
项目.属性.链接器.输入.附加依赖项
"sqlite3.lib"

至此, 即可编译运行

注意

第二次以后运行程序,运行前需要手动删除debug目录下生成的demo.db

代码

/*author : program2013date : 2013.1.2fileName : DemoSqliteCiudUsingVcpp.cpp*/#include <tchar.h>#include "sqlite3.h"#include <iostream>using namespace std;#define NULL_CALLBACK NULLsqlite3 * pDbConnection = NULL;const char * szSqlCreate = " create table tb_usr(id integer primary key autoincrement, name varchar(16), score integer); ";char * szSqlInsertFormat = " insert into tb_usr(name, score) values('%s', %d); ";char * szSqlDeleteFormat = " delete from tb_usr where name= '%s'; ";char * szSqlUpdateFormat = " update tb_usr set score=%d where name='%s'; ";const char * szSqlQuery = " select id, name, score from tb_usr; ";char szSql[128];//create table structurebool createTable(char* szErrorInfo){return (SQLITE_OK == sqlite3_exec(pDbConnection , szSqlCreate, NULL_CALLBACK, NULL, &szErrorInfo));}//add recordbool insertRecord(const char * szName, int nScore, char* szErrorInfo){sprintf(szSql, szSqlInsertFormat, szName, nScore);    return ( SQLITE_OK ==  sqlite3_exec(pDbConnection , szSql, NULL_CALLBACK, NULL, &szErrorInfo) );}//delete recordbool deleteRecord(const char * szName, char* szErrorInfo){sprintf(szSql, szSqlDeleteFormat, szName);    return ( SQLITE_OK == sqlite3_exec(pDbConnection, szSql, NULL_CALLBACK, NULL, &szErrorInfo) );}//update recordbool updateRecord(const char * szName, int nScore, char* szErrorInfo){sprintf(szSql, szSqlUpdateFormat, nScore, szName);    return ( SQLITE_OK == sqlite3_exec(pDbConnection, szSql, NULL_CALLBACK, NULL, &szErrorInfo) );}int displayResultSet(void *NotUsed, int recordCount, char **record, char **colName){    for(int i = 0; i < recordCount; i++)    {        cout << colName[i] << " = " << (record[i] ? record[i] : "NULL") << ", ";    }    cout << endl;    return 0;}//query recordbool queryRecord(char* szErrorInfo){    return ( SQLITE_OK == sqlite3_exec(pDbConnection, szSqlQuery, displayResultSet, NULL, &szErrorInfo) );}void myExit(sqlite3 * pDbConnection, const char* szErrorInfo){sqlite3_close(pDbConnection);cout << szErrorInfo << endl;system("pause");exit(0);}int _tmain(int argc, _TCHAR* argv[]){char szErrorInfo[256] = {'\0'};    if( SQLITE_OK != sqlite3_open(".\\demo.db", &pDbConnection) )    {string strErrorInfo("error to open database, ");strErrorInfo += sqlite3_errmsg(pDbConnection);        myExit(pDbConnection, strErrorInfo.c_str());    }//create table structureif ( !createTable(szErrorInfo) ){myExit(pDbConnection, szErrorInfo);}    //add record    if ( !( insertRecord("zhangsan", 90, szErrorInfo) && insertRecord("wangwu", 69, szErrorInfo) && insertRecord("lisi", 58, szErrorInfo) ) )    {        myExit(pDbConnection, szErrorInfo);    }    //delete zhangsan    if ( !deleteRecord("zhangsan", szErrorInfo) )    {myExit(pDbConnection, szErrorInfo);    }    //update lisi    if ( !updateRecord("lisi", 98, szErrorInfo) )    {myExit(pDbConnection, szErrorInfo);    }    //query record    if ( !queryRecord(szErrorInfo) )    {myExit(pDbConnection, szErrorInfo);    }szErrorInfo[0] = '\0';myExit(pDbConnection, szErrorInfo);return 0;}


项目demo_sqlite下载地址

(项目中的代码与文章中贴出的代码有小差异,均可使用,文章中的是最新的)

http://download.csdn.net/download/prg1986/4953824

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老师上课讲错了怎么办 专升本差了一分怎么办 登录不上学信网怎么办 steam被好友删了怎么办 护士继续教育学分证丢了怎么办 护士证到期未延续注册怎么办 学籍和户口不在一起小升初怎么办 定了酒店不能退怎么办 去哪儿网酒店不允许取消怎么办 快递寄送身份证扣海关怎么办 7岁龋齿烂到牙根怎么办 法院判完对方说没钱怎么办 初中填完志愿后怎么办 上海小学借读一年级没有学籍怎么办 学历不高的我该怎么办 没学历的我该怎么办 物业达不到服务标准该怎么办 没有能力的人该怎么办 工作累了腰疼怎么办 机场来早了6小时怎么办 苏宁金融综合评分不足怎么办 苏宁金融秒拒怎么办 微盘账号忘记了怎么办 天府e税忘记密码怎么办 未成年在外面没地方住怎么办? 半框眼镜片掉了怎么办 选修差0.5个学分怎么办 脱产考博社保卡怎么办 幼儿上课不认真听讲怎么办 手机恢复的音频文件打不开怎么办 高考志愿填报不记得密码怎么办 经济纠纷案被告没有证据怎么办 管家婆管理员密码忘记了怎么办 人离职了公司扣发工资怎么办? 美国给我们断网怎么办 sci发表后发现错误怎么办 pos机按键是英文怎么办 蔚县县医院慢病本怎么办 知网下载的论文乱码怎么办 被期刊网骗了怎么办? 缝针缝到神经上怎么办