sqlite数据库同步
‘壹’ 本地应用的sqlite数据库如何与服务器的MySQL同步
数据源一方要有一个队列,用来存放要同步的数据,当满足同步条件(例如:网络连接),开始从队列中同步。不论是MySQL还是SQLite都要有这个队列。 这个队列的实现,可以使一个单独存放的ID列表,也可以就在源数据中增加一个标志位。
‘贰’ 如何让Navicat for SQLite 连接Sqlite数据库
Navicat for SQLite 配备了数据编辑、SQL查询和数据模型工具,并支持所有SQLite对象类型。其主要功能有数据传输、数据同步、导入或导出、报表等。其凭借设计的方便快捷的用户界面,并且用户创建、组织、访问和共享信息都非常的简便快捷,优化SQLite工作流程,提高工作效率。下面我们将给大家介绍介绍如何让Navicat
for SQLite 连接Sqlite数据库?
Navicat 连接Sqlite数据库的方法和步骤如下:
步骤一:在Navicat官网的下载页面下载 Navicat for SQLite 安装包,运行应用程序,完成安装任务。Navicat for SQLite 安装包下载地址:
步骤二:点击桌面上的 Navicat for SQLite 图标,进入到Navicat主界面。
步骤三:点击Navicat主界面左上角的文件,选择新建连接,最后选择SQLite。
Navicat连接Sqlite数据库
步骤四:在弹出的新建连接对话框中输入正确的信息,点击“确定”按钮。
Navicat连接Sqlite数据库
步骤五:新建的 SQLite 数据库就显示在 Navicat 主界面的连接树下。
‘叁’ Android中,我已经在项目中建立了数据库和表,现在我用Sqlite Expert 在这个数据库又新建了张表,怎么同步
你应该是调用sqlitedatabse数据库吧。sqliteopenhelper辅助类里重写了两个方法,一个用于创建表,一个用于更新表
‘肆’ 两个sqlite对象,链接同一个数据库,断开其中一个sqlite链接,另一个也跟着断开,怎么解决
SQLite是一个开源的、内嵌式的关系型数据库。SQLite和Oracle和Access一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引、触发器等等,但是它实际上得到的就是一个文件。SQLite数据库具有下面的特点:
3、SQLite数据库预定义了许多错误代码宏以方便程序设计错误处理的应用。很多API接口函数的返回类型是整形,这表示返回错误码,所以在接口调用中可以根据返回码进行错误处理,可以使用函数sqlite3_errmsg()获得附加的错误信息。
图像数据在sqlite数据库中是按照二进制形式存放的。 操作二进制数据需要用一个辅助的数据类型:sqlite3_stmt * 。它是一个已经把SQL语句进行了解析,并用sqlite自己标记记录的内部数据结构来表示的SQL语句。正因为这个结构已经被解析了,所以你可以往这个语句里插入二进制数据。
把二进制数据插到 sqlite3_stmt 结构的过程,必须用sqlite 提供的函数来插入。SQLite数据库提供了一种通配符机制用来表示SQL语句中不确定的字符值,这些通配符如?、aaa、nnn等。做这些通配符所代表的值在sqlite3_bind_开头的接口函数中被填充,在SQLite数据库中提供了很多以sqlite3_bind_开头的接口用来给SQL声明中的通配符赋值。
二进制数据的存储相对比较复杂一点,但从数据库对二进制数据的操作来看,主要分为数据写入和数据读出。
‘伍’ android sqlitedatabase 的操作是同步线程安全的吗
是的,默认的情况下,你可以把insert,update这些函数看作原子操作。可以参考这一篇
网页链接
但是你需要注意,你不能多次调用close函数,否则会产生异常。
‘陆’ 如何使用SQLite
前些时候看到兴趣小组里有人问“Android上SQLite的最佳实践”是什么,好奇地搜了一下,确实没有一个好一点的指导文档,平时的使用也只是简单的拷贝code,并没有深入的研究过。以下是我看到的Kevin关于其使用的心得,原文的大体的意思是:Android例子涵盖了一些Sqlite的基本用法,但它们并没有深入地给出合理的使用方法,更重要的是,不合理的使用方法。大多数例子和文档只是涉及最基本的数据库查询,或者教你如何创建一个ContentProvider。从来不提及的地方像: · 什么地方创建和保存SQLiteOpenHelper实例? · 可以有多少个实例? · 多线程同时访问数据库有没有什么要担心的?基本的内容是,你可以任意次数地连接Sqlite数据库,而且Android系统也支持你这样做。Sqlite拥有文件级别的锁,用来同步访问和防止错误。如果你只知道这些,那么,将会给你带来很大的痛苦。开源的一个好处是,你可以深入代码一探究竟。从代码和一些测试中,我了解到以下事实: · Sqlite拥有文件级别的锁。许多线程可以同时读,但只有一个可以写。锁阻止多个同时写入。 · Android在SQLiteDatabase中实现了一些java锁来确保动作是同步进行。 · 如果你用多个线程疯狂地访问数据库,你的数据库不会(或不应该)崩溃。没提到的是,如果你通过多个不同的真实连接同时写数据库,其中的某个会失败,它不会等到前一个完成后继续写入。简单地,不会写入你的改变,更糟糕的是,你也得不到一个异常,只是在LogCat中输出一些message,仅此而已。SQLiteOpenHelper类做了一些有趣的事。尽管它有方法可以获得一个只读的连接和可读写的连接,但实质上它们是同一个连接。假设没有文件写错误的话,只读的连接实质上就是一个可读写的连接。有趣吧。因此,如果你的app中使用一个helper的话,即便从多线程中使用,你也从未使用多个连接。同样,一个helper中只有一个SQLiteDatabase的实例,这个实例中实现了一些java锁。因此,当你正在执行数据库的操作时,其它db的操作都将锁定。即便是你使用多个线程来做这些事以便优化数据库的性能,坏消息,没有什么用。按照我的认识,SQLite工作的方式,基本上不可能会破坏你的数据库,除非代码里有bug或者有硬件问题。因此,我推荐这样使用:创建一个SQLiteOpenHelper静态对象。什么时候去close它呢?不需要。当app关闭,它会自动释放文件引用。但是,会不会有“close() was never explicitly called on database”异常呢?如果你注意的话,当连接挂在那里的时候,你没有得到那个异常。你只是在连接已经建立,而你又尝试打开另一个时才会有异常。因此,你只需要打开一次连接。像这样来使用:public class DatabaseHelper extends OrmLiteSqliteOpenHelper{ private static DatabaseHelper instance; public static synchronized DatabaseHelper getHelper(Context context) { if (instance == null) instance = new DatabaseHelper(context); return instance; }//Other stuff... } 就这些。。。
‘柒’ 用Air开发的软件更新时旧的sqlite里面的内容如何添加到新的数据库,求思路
如果是本地数据的需求用SQlite,如果像登陆有用验证或者网络间共享数据的话,就需要调用WebService与后台服务器数据交互,这两种数据是没有联系的。一个是本地数据库,一个是服务器端数据库。本地用数据库就是SQlite,别的不太可能,终端没有那么高的性能,再说甲骨文公司也没出手机端oracle啊。
如果你的数据是已知的,静态的,没有太多的变化,满可以在本地SQlite中存储、读取。这样不会因网络问题而降低效率和成功率。如果数据未知、有实时的变化或者有与其他用户交互、共享的数据必然需要后台服务器数据。
资料参考:http://www.cnblogs.com/aierong/archive/2009/02/19/flexairsqlite.html
望采纳,谢谢
‘捌’ sqlite怎么连接数据库文件
sorry, 没安装"sqlite developer".
若只是想导出sqlite数据库中的表数据可以很简单地用sqlite命令:
tim@ubtim:~/workspace$ sqlite3
SQLite version 3.7.7 2011-06-23 19:49:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table tb_test (field int, val varchar(3));
sqlite> insert into tb_test values (1, 'a');
sqlite> insert into tb_test values (2, 'b');
sqlite> insert into tb_test values (3, 'c');
sqlite> .mode csv
sqlite> .output tb_test.csv
sqlite> select * from tb_test;
sqlite> .q
tim@ubtim:~/workspace$ cat tb_test.csv
1,a
2,b
3,c
tim@ubtim:~/workspace$