当前位置:首页 > 编程开发

VC2005使用SQLite,适用于WIN32以及WINCE

webgou16年前 (2010-10-10)编程开发481

VC2005使用SQLite,适用于WIN32以及WINCE

首先,把编译SQLITE生成的DLLLIBsqlite3.h 放到项目的文件夹下,把项目=》属性=》链接器=》输入=》附加依赖项:输入SQLITElib文件名
一、创建MySQLite.cpp
#include "stdafx.h"
#include "MySQLite.h"
bool MySQLite::sqlite_connect(char *filename)
{
    db=NULL;
    zErrMsg = 0;
    row = 0, column = 0;
    int rc;
    rc = sqlite3_open(filename, &db); //
打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
    if( rc )
    {
        strcpy(zErrMsg,sqlite3_errmsg(db));//
保存错误信息
        sqlite3_close(db);
        return false;
    }
    return true;   
}

bool MySQLite::sqlite_exec(char *sql)
{
    int rc;
    rc=sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
    if(rc == SQLITE_OK)
        return true;
    return false;
}

void MySQLite::sqlite_search(char *search_sql)
{
    sqlite3_get_table( db,search_sql,&azResult,&row,&column,&zErrMsg);
}

bool MySQLite::sqlite_disconnect()
{
//
释放掉 azResult 的内存空间
    sqlite3_free_table( azResult );
    if(sqlite3_close(db)==SQLITE_OK) //
关闭数据库
        return true;
    return false;
}

二、创建MySQLite.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlite3.h"
class MySQLite
{
private:
    sqlite3 *db;//
数据库句柄
    char **azResult; //
二维数组存放结果
    char *zErrMsg;//
保存错误信息
    int row;
    int column;
public:
    bool sqlite_connect(char *filename);//
连接数据库
    bool sqlite_exec(char *sql);//
执行SQL命令
    void sqlite_search(char *search_sql);//
查询
    bool sqlite_disconnect();//
断开数据库连接

    int GetTableRow(){return row;}//
查询后,取得表
    int GetTableColumn(){return column;}//
查询后,取得表
    char *GetErrorMsg(){return zErrMsg;}//
取得当前错误提示
    char *GetTableData(int x,int y){return *(azResult+x+y*column);}//
查询后,取得表内某个单元值
};

三、创建测试文件test.cpp

#include "stdafx.h"
#include <iostream>
#include "MySQLite.h"
#define _DEBUG_
using namespace std;
int main( void )
{
    bool result;
    MySQLite *sqlite=new MySQLite();
    result=sqlite->sqlite_connect("hellogv.db");
    if(!result) cout<<sqlite->GetErrorMsg()<<endl;
   
    result=sqlite->sqlite_exec("CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(500),SensorParameterREAL);");
    if(!result) cout<<sqlite->GetErrorMsg()<<endl;

    result=sqlite->sqlite_exec("INSERT INTO \"SensorData\" VALUES(NULL , 1 , 1 , '200605011206', 18.9 );");
    if(!result) cout<<sqlite->GetErrorMsg()<<endl;


    result=sqlite->sqlite_exec("INSERT INTO \"SensorData\" VALUES(NULL , 23 , 45 , '200605011306', 16.4 );");
    if(!result) cout<<sqlite->GetErrorMsg()<<endl;

    sqlite->sqlite_search("SELECT * from SensorData");
    cout<<sqlite->GetTableColumn()<<"   "<<sqlite->GetTableRow()<<endl;
    cout<<sqlite->GetTableData(0,0)<<endl;

    sqlite->sqlite_disconnect();

    return 0;
}

 

http://blog.csdn.net/hellogv/archive/2008/05/06/2399700.aspx

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=360

标签: vswince
分享给朋友:

“VC2005使用SQLite,适用于WIN32以及WINCE” 的相关文章

主流 AI 代码助手功能分析(2026年3月)

 一、市场概览AI 代码助手已从"补全工具"进化为"编程代理",核心趋势:从补全到 Agent:能自主完成完整功能、跑测试、提交 PRIDE 深度整合:Cursor、Windsurf 直接 fork VSCode多模型路由:GPT-4o、Claude…

工作中的小失误原因分析

在工作中,测试发现的一个问题,追其原因是----把代码同步错了.这几天心中一直在想,如何尽量避免这样的小错误.那有又哪些原因呢? 罗列下原因: 1.在写程序时,被打断次数太多,临时追加任务就很容易出错. 2.去调车,在太阳下晒一两天,我想基本上是没心事再去总结问题或是写代码. 3.变化时刻存在:领…

Android类库常用类型解析

在Android类库中,各种包写成android.*的方式,重要包的描述如下所示:android.app :提供高层的程序模型、提供基本的运行环境android.content 包含各种的对设备上的数据进行访问和发布的类android.database :通过内容提供者浏览和操作数据库android…

android架构的理解

(Android)java虚拟机和Dalvik虚拟机的区别Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野。它对内存的高效使用,和在低速CPU上表现出的高性能,确实令人刮目相看。 依赖于底层Posix兼容的操…

UE4游戏汉化通用教程|第一篇:Pak解包和打包以及简单导出并汉化文本文件

 Pak解包和打包Pak文件就是UE4游戏生成的数据包文件,PC游戏一般放在游戏路径下的Content\Paks,安卓则在obb解包后游戏路径下的Content\Paks中,一般汉化所需的文本都放在pakchunk0-WindowsNoEditor.pak(PC端)或者pakchunk0-…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。