一片冰心在玉壶

那时我们有梦,关于文学,关于爱情,关于穿越世界的旅行, 如今我们深夜饮酒,杯子碰到一起,都是梦破碎的声音. 交往都是初逢,爱情都在心里,往事都在梦中, 希望都带着注释,信仰都带着呻吟. 总有善意的光逃避现世的繁琐而寻找片刻的安宁, 也许,就是你凝视这里的眼睛

博客园 首页 联系 订阅 管理

    一开始用CE自带的EDB写,总出问题,在长的字根本就不好用。后来在网上找到了SQLITE,对说还行。。。这不就开始行动了。。。

    网上的资料比较多,推荐区这里:http://www.sqlite.com.cn/POPlist.asp?classid=4

    对于前期准备工作,当然是网上写的一样,按下面一步一步实现就可以:

编译出所需的 SQLite DLL.

    a> 在 http://sqlite-wince.sourceforge.net/ 中下载 SQLite for Windows CE 的DLL 源代码.

    b). 打开eVC新建一个“WCE Dynamic-Link Library”工程,命名为:sqlite3

    c). 在接下来的对话框中选择"An empty Windows CE DLL project",点击 FINISH,之后再点击 OK

    d). 将源码中所有的 *.c *.h *.def 复制到工程文件夹下

    e). 在 Source Files 中添加除shell.c和tclsqlite.c这两个文件以外所有 *.c 的SQLite源文件文件

    f). 在 Header Files 中添加所有 *.h 的SQLite源文件文件

    g). 将 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中

    h). 在eVC中选好你要编译的平台,例如“Win32(WCE ARMV4I) Release”

    i). 好了,开始编译,Build(F7)一下

 

   把编译SQLITE生成的DLLLIBsqlite3.h 放到项目的文件夹下,把项目=》属性=》链接器=》输入=》附加依赖项:输入SQLITElib文件名

   按http://www.sqlite.com.cn/MySqlite/4/494.Html所写的,产生一个MySQLite类

   下面就是应用这个类:

   在自己在处理的类进加入成员变量:MySQLite *sqlite;

   打开数据库:sqlite->sqlite_connect("\\ResidentFlash\\MyTH880H.db");

   建表:
代码
  result = sqlite->sqlite_exec("CREATE TABLE SAMPLE(NAME NCHAR(13) PRIMARY KEY, TIME NCHAR(25),ZONE NCHAR(18),SAMPLEDATA BLOB);");
    
if(!result)
        AfxMessageBox(_T(
"创建表失败"));
    
else
        AfxMessageBox(_T(
"创建成功"));

插入数据:

代码
    char *p="21210259.DUS";
    
char time[25];
    
char zone[18];
    BYTE samData[
546];
    memcpy(time,SettingData.time,
25);
    memcpy(zone,SettingData.remark,
18);
    memcpy(samData,
&SettingData,546);
    
bool result;
    
char buf[256];
    sprintf(buf, "insert into sample values ('%s','%s','%s',?);",p,time,zone);
    sqlite3_stmt 
*stat;//写二进制数据时要用的结构
    sqlite3_prepare(sqlite->db,buf, -1&stat, 0 );//准备插入数据
    sqlite3_bind_blob(stat,1,samData,546, NULL ); //把内容和字段绑定
    result=sqlite3_step( stat );//执行
    sqlite3_finalize( stat );//

 

读二进制文件:

 

代码
  sqlite3_stmt *stat;//写二进制数据时要用的结构
    sqlite3_prepare(sqlite->db, "select * from sample;"-1&stat, 0); 
    sqlite3_step(stat); 
   
//得到纪录中的BLOB字段 
    const void * test = sqlite3_column_blob(stat, 3); 
    //拷贝该字段 
   memcpy(&SettingData,test,546);

 

 搞定,还在就是在CE下显示UINICODE问题,我用CString.format居然不好用,乱码。。。

直接这么写就好了, char *str1;CStirng str(str1);这么写就行。。。NND

真是搞死人呀!上传我在CE下生成成功的那3个文件:SQLite

posted on 2010-11-01 15:56  Sankye  阅读(2355)  评论(2编辑  收藏  举报