Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430554
  • 博文数量: 56
  • 博客积分: 2262
  • 博客等级: 大尉
  • 技术积分: 711
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-08 20:04
文章分类

全部博文(56)

文章存档

2013年(1)

2012年(9)

2011年(10)

2010年(7)

2009年(7)

2008年(22)

我的朋友

分类: 嵌入式

2010-08-06 17:14:25

    WinCE下将SQLite数据库导入到另外一个SQLite数据库
 
    在嵌入式数据库当中,SQLite的使用应该算是比较多的了。而就在最近的项目中使用到了。
    由于没有实现远程数据库同步功能,因此只有靠下载或者上传文件的方式将数据库同步了。将下载下来的DB3文件的表和数据全部导入到本地数据库当中。同样都是SQLite,处理起来还是比较方便的。分为以下几个步骤:
1. 将源(下载下来的DB3文件)数据库Attach到已经建立连接的本地目标数据库

ATTACH DATABASE 'DB3_file_name' AS SourcesDataBase

   
    
 
 
2. 由于不知道源数据库中有哪些表,因此需要将表明保存下来。使用的语句如下:

select * from SourcesDataBase.sqlite_master WHERE type = 'table'

   对于表来说,type 字段永远是 ‘table’,name 字段永远是表的名字
3. 在上一步中,已经将源数据库表明保存下来了,这一步要做的就是检查目标数据库库中是否已经存在这个表了,如果存在,可以选择先delete,在insert,也可以直接insert。对于目标数据库中如果没有此表,则可以使用create创建。
 

select count(*) from [main.]sqlite_master where type='table' and name='table_name';--这里判断一下目标数据库中是否已经存在此表

delete from [main.]table_name;--完全更新的话可以加入这句

INSERT INTO [main.]table_name SELECT * FROM SourcesDataBase.table_name;--将源数据库中的数据copy到目标数据库


CREATE TABLE [main.]table_name AS SELECT * FROM SourcesDataBase.table_name;--创建,并copy数据到目标数据库

4. 好了,就这么简单,数据库导入完毕。这个时候不要忘了DETACH

DETACH DATABASE SourcesDataBase


    在以上遇到一些问题,这么判断PRIMARY KEY, 因为我在使用的时候发现,copy的时候,将PRIMARY KEY也一同复制了,如果是一个自增的index,insert进去的数据就不正确了,可能会出现两个相同的index了。

    还有就是在第三步的最后一个语句里面,我如果只想创建表,而不复制里面的数据,该这么写呢?

    欢迎大家一起讨论一下。

阅读(3020) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~