- 浏览: 65773 次
文章分类
- 全部博客 (35)
- java (35)
- c# winform 使用flowlayoutpanel控件做为导航菜单按钮的容器 (1)
- 数据库比较工具DBCompareTool 0.3.0 preview 发布 (1)
- xmemcached发布1.3.4 (1)
- web.xml中一些标签的解释 (1)
- Select (1)
- lua 网址大全 (1)
- date 显示至1970年来的秒数 (1)
- struts2一个表单提交多个action (1)
- 监听短信并判断是否未读 (1)
- 日本软件公司 管理者 改善 流程 (1)
- 一点点感悟 (1)
- 判断一个字符是双字节还是单字节 (1)
- “未与信任 SQL SERVER 连接相关联”错误解决方法 (1)
- 如何美化自己的BLOG (1)
- 金山词霸2005采用新的防止盗版的方法及简单解决方法 (1)
- 图形图像必须知道的事(一):几何变换 (1)
- 男人帮之程序员坚持语录 (1)
- android程序复制数据库 (1)
- javascript父、子页面交互小结 (1)
- java使用代理发送邮件 (1)
- eclipse修改project名称出问题,彻底删除项目 (1)
- Android开发之Intent、广播和接收 (1)
- 在一个方向上延伸,我的春天可能快来到了。 (1)
- chm文件无法打开问题 (1)
- Oracle数据库与MySQL数据库的几点区别 (1)
- [转载]SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 (1)
- 高质量Java编码指南 (1)
- ruby 不完全安装修复 [openssl or zlib not found] (1)
- 切换CVS账户 (1)
最新评论
-
jurafish:
楼主,这个比较工具在哪儿下载呀?你说给的链接全都失效了:(
数据库比较工具DBCompareTool 0.3.0 preview 发布 -
wolf_awp:
iteye越来越不行了啊!
一点点感悟 -
zhuchao_ko:
............................... ...
struts2一个表单提交多个action
一般项目中我们把db文件放到assert或者raw目录下面,在程序第一次启动的时候复制到私有目录下面
?
在使用过程中,老是发现复制不成功,私有目录下的db文件总是3072
?
<span style="color: #ff0000;">后来发现应该是使用ContentProvider的原因,它会先创建一个空的db。
</span>
<br><img src="http://dl.iteye.com/upload/attachment/598512/8863f1d9-f38b-33f4-8262-dd5692375d79.jpg" alt="">
而我的程序在复制数据库的时候会判断私有目录下是否有数据库文件,如果有则不复制。
?
现在改为用SharedPreferences一个字段判断是否第一次复制。
<span style="color: #ff0000;">第一次复制数据库的时候就算私有目录下有db文件,也删除。</span>
这样就ok了
?
代码如下:
public class CopyDataActivity extends Activity{ boolean needCopy = false; SharedPreferences mSP = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.copy_data); mSP = getSharedPreferences(Constants.PREFERENCES_NAME, MODE_PRIVATE); needCopy = mSP.getBoolean("need_copy_data", true); if(needCopy){ handler.post(copyPlanThread); }else{ goToMain(); } } private void goToMain(){ mSP.edit().putBoolean("need_copy_data", false).commit(); startActivity(new Intent(CopyDataActivity.this,LoginActivity.class)); this.finish(); } private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int what = msg.what; int arg1 = msg.arg1; if(what==1){ //这里可以在页面显示复制进度什么的 Log.e("Copy","复制大小:"+arg1); }else{ goToMain(); mSP.edit().putBoolean("need_copy_data", false).commit(); } } }; Runnable copyPlanThread = new Runnable() { @Override public void run() { try{ copyDatabase(); }catch(Exception e){ e.printStackTrace(); } } }; private void copyDatabase() throws Exception{ Log.e("Copy","copy start"); File dbfile = new File(getFilesDir().getAbsolutePath() +File.separator+ "mydb.db"; File dir = dbfile.getParentFile(); if(dir.exists() == false){ dir.mkdirs(); } //把contentprovider生成的db删除 if(dbfile.exists()){ dbfile.delete(); } InputStream is = this.getResources().openRawResource(R.raw.library); FileOutputStream fos = new FileOutputStream( dbfile); byte[] buffer =new byte[1024]; int size = 0; int length = 0; //字节 while( (length= is.read(buffer)) > 0){ fos.write(buffer,0,length); size += length; Message msg = new Message(); msg.what = 1; msg.arg1 = size; handler.sendMessage(msg); } fos.flush(); fos.close(); is.close(); Log.e("Copy","copy end"); Message msg = new Message(); msg.what = 0; msg.arg1 = 0; handler.sendMessage(msg); } }
?
?
?
<ul style="display:none;">
</ul>
发表评论
-
切换CVS账户
2012-02-07 17:19 1138<div style="text-i ... -
ruby 不完全安装修复 [openssl or zlib not found]
2012-02-07 14:58 968发现 ruby源码包的ext文件夹下有很多 扩展包, ... -
高质量Java编码指南
2012-02-04 14:33 1110核心思想依然是《Effective Java》里面说: ... -
[转载]SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2012-02-03 12:09 837Insert是T-sql中常用语句,Insert ... -
Oracle数据库与MySQL数据库的几点区别
2012-02-03 08:34 1267<span style="" ... -
chm文件无法打开问题
2012-02-02 13:59 935<div class="quot ... -
在一个方向上延伸,我的春天可能快来到了。
2012-01-31 13:38 821工作了这么久,我好想才找到了自己感兴趣的方向。不知道算 ... -
Android开发之Intent、广播和接收
2012-01-31 13:28 7655<h1>Android开发之Intent、 ... -
eclipse修改project名称出问题,彻底删除项目
2012-01-11 14:28 8488想给刚建好的project改名字,refac ... -
java使用代理发送邮件
2011-12-28 15:03 2027[size=18px;]最近用java写个发邮件的东东 ... -
javascript父、子页面交互小结
2011-12-28 13:43 996<span style="font-f ... -
男人帮之程序员坚持语录
2011-12-20 16:29 818[size=18px;]1.”我们处在一个瞬息万变的世 ... -
图形图像必须知道的事(一):几何变换
2011-12-20 14:03 1142[size=9pt;]作者:[/size]<s ... -
金山词霸2005采用新的防止盗版的方法及简单解决方法
2011-12-19 09:44 898金山词霸2005新鲜出炉,不少人都已经从网上下载并且安 ... -
如何美化自己的BLOG
2011-12-15 17:24 729下面的三个美化BLOG的方法是用的最多的,是最常见的. ... -
“未与信任 SQL SERVER 连接相关联”错误解决方法
2011-12-14 17:19 835<font s ... -
判断一个字符是双字节还是单字节
2011-12-14 10:24 4823对于字符串的处理,经常会遇到需要判断字符是双字节还是单 ... -
一点点感悟
2011-12-13 11:09 860<p class="MsoNo ... -
日本软件公司 管理者 改善 流程
2011-12-13 09:49 783<p class="MsoNorma ... -
监听短信并判断是否未读
2011-12-08 19:04 1091final String SMS_RECEIVED ...
相关推荐
3. **复制数据库到应用数据库目录** 因为`assets`目录下的文件无法直接由SQLite数据库API访问,我们需要在应用首次运行时将数据库文件复制到上述的数据库路径。这通常在`SQLiteOpenHelper`的`onCreate()`或`...
在Android平台上,数据库是应用程序存储结构化数据的重要方式。SQLite是一种轻量级的、嵌入式的、关系型数据库,它是Android系统默认支持的数据库系统。本文将深入探讨如何在Android设备上查看和导出SQLite数据库...
在Android开发中,有时我们需要将预置的数据库文件与应用一起发布,并在应用程序首次启动时将其复制到外部存储(如SD卡)或内部存储(内存)中,以便于后续的操作和使用。这样的需求通常出现在那些需要提供初始数据...
在Android应用开发中,数据库是存储和管理应用程序数据的关键组件。`SQLite Asset Helper`是一个流行的开源库,由Jake Wharton创建,它简化了在Android应用中处理SQLite数据库的工作流程,特别是涉及数据库初始化和...
在Android开发中,数据安全是至关重要的,尤其是当应用程序存储敏感用户信息时。"android 加密已创建的数据库"这个话题涉及到如何使用第三方库SQLCipher对已经存在的SQLite数据库进行加密,以增强数据的安全性。...
总之,在Android中从`assets`目录读取数据库涉及复制数据库文件、创建数据库帮助器、打开数据库并进行操作等步骤。通过这种方式,我们可以预先加载数据库,提供快速启动体验,或者在不联网的情况下使用预设的数据。...
- 调用`copyDatabase()`方法在应用启动时复制数据库,然后通过`getWritableDatabase()`或`getReadableDatabase()`打开数据库进行读写操作。 3. **使用SQLiteOpenHelper的实例进行数据操作**: - 在你的应用中,你...
在Android系统中,数据库是用于存储应用程序数据的重要组成部分。它通常使用SQLite,一个轻量级、关系型数据库管理系统,能够高效地处理大量的数据。本文将深入探讨如何通过命令行方式来访问Android设备上的数据库,...
2. **复制数据库文件**:在应用启动时或需要加载数据库时,我们需要将assets目录下的.db文件复制到Android的默认数据库路径(通常是/data/data/your_package_name/databases/)。可以使用InputStream和OutputStream...
2. **复制数据库文件**:在`SQLiteOpenHelper`的子类中,创建一个方法用于从`assets`目录复制数据库文件到`databases`目录。这里需要用到`Context`对象,可以通过`getApplication()`或者`getApplicationContext()`...
对于调试目的,可以使用adb(Android Debug Bridge)将数据库文件复制到本地。文件通常位于`/data/data/your.package.name/databases/your_database.db`路径下。 一旦你有了.db文件,可以在计算机上使用SQLite...
Fragment是Android应用程序的一个模块化组件,它可以独立于Activity存在,并可以在多个Activity之间复用。在这个Demo中,每个号码归属地查询的结果都由一个Fragment来表示,ViewPager将这些Fragment进行组合和管理...
首先,让我们详细讨论如何在Android中复制数据库到SD卡。在Android 6.0(API级别23)之前,应用程序可以直接写入SD卡,但从那时起,为了增强用户数据安全,Google引入了运行时权限管理系统。因此,现在你需要请求`...
在Android应用开发中,数据库是存储用户数据和应用程序信息的重要工具。SQLite是一个轻量级的、关系型的数据库,它是Android系统内置的数据库系统,适用于本地数据存储。本篇文章将详细探讨如何在Android应用中实现...
在这种情况下,可以使用`Context`的`openFileInput()`和`openFileOutput()`方法打开数据库文件,或者使用`AssetManager`从应用资源中复制数据库文件。 例如,当从应用的assets目录加载数据库时,可以这样操作: ``...
由于这个目录是受保护的,你需要通过ADB(Android Debug Bridge)连接到设备,并使用`adb pull`命令将数据库文件复制到电脑上。例如: ``` adb pull /data/data/your_package_name/databases/your_database.db /...
在Android开发中,SQLite是一个重要的组成部分,它是轻量级的关系型数据库,被广泛用于存储应用程序中的数据。SQLite3是SQLite的第三个主要版本,它提供了高效、可靠的数据库操作能力。在这个"Android 数据库操作...
SQLite是一个轻量级的数据库系统,它是Android内置的数据库,用于应用程序存储结构化数据。本文将深入探讨如何在Android中进行数据库的导入与导出,以及如何利用工具SQLiteSpy对SQLite数据库进行操作。 首先,我们...
在Android应用开发中,数据库是存储和管理应用程序数据的关键组件。当应用的数据库需要更新以适应新功能或改进的数据结构时,如何优雅地进行数据库升级并同时保留原有的用户数据成为一个重要的问题。本篇文章将深入...
在Android平台上,开发人员经常需要处理数据存储,包括将数据库文件移动到外部存储(如SD卡)以及在界面上展示应用程序图标的小红点等角标信息。这份源码示例涵盖了这两个主题,提供了关于Android高级应用开发的知识...