知了博客

集天地之精华,吸日月之灵气

« 诺贝尔奖离我们有多远?关于衣服 »

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

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

发表评论:

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

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Arwen Build 90619 Code detection by Codefense  theme by BokeZhuti

Copyright know blog. Some Rights Reserved.站长(msn):webmaster#webgou.info(#换成@) 粤ICP备09183716号