`

在Android中把SQLite的数据库文件存储在SD卡中【转】

阅读更多

下面看最重要的MainActivity中的代码:

http://tech.cncms.com/shouji/android/113185_4.html
package com.himi;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
// ------------第三种保存方式--------《SQLite》---------
/**
* @author Himi
* @保存方式:SQLite 轻量级数据库、
* @优点: 可以将自己的数据存储到文件系统或者数据库当中, 也可以将自己的数据存
* 储到SQLite数据库当中,还可以存到SD卡中
* @注意1:数据库对于一个游戏(一个应用)来说是私有的,并且在一个游戏当中,
* 数据库的名字也是唯一的。
* @注意2 apk中创建的数据库外部的进程是没有权限去读/写的,
* 我们需要把数据库文件创建到sdcard上可以解决类似问题.
* @注意3 当你删除id靠前的数据或者全部删除数据的时候,SQLite不会自动排序,
* 也就是说再添加数据的时候你不指定id那么SQLite默认还是在原有id最后添加一条新数据
* @注意4 android 中 的SQLite 语法区分大小写的!!!!!这点要注意!
* String UPDATA_DATA = "UPDATE himi SET text='通过SQL语句来修改数据' WHERE id=1";
* 千万 不能可以写成
* String UPDATA_DATA = "updata himi set text='通过SQL语句来修改数据' where id=1";
*/
public class MainActivity extends Activity implements OnClickListener {
private Button btn_addOne, btn_deleteone, btn_check, btn_deleteTable,
btn_edit, btn_newTable;
private TextView tv;
private MySQLiteOpenHelper myOpenHelper;// 创建一个继承SQLiteOpenHelper类实例
private SQLiteDatabase mysql ;
//---------------以下两个成员变量是针对在SD卡中存储数据库文件使用
// private File path = new File("/sdcard/himi");// 创建目录
// private File f = new File("/sdcard/himi/himi.db");// 创建文件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv_title);
btn_addOne = (Button) findViewById(R.id.sql_addOne);
btn_check = (Button) findViewById(R.id.sql_check);
btn_deleteone = (Button) findViewById(R.id.sql_deleteOne);
btn_deleteTable = (Button) findViewById(R.id.sql_deleteTable);
btn_newTable = (Button) findViewById(R.id.sql_newTable);
btn_edit = (Button) findViewById(R.id.sql_edit);
btn_edit.setOnClickListener(this);
btn_addOne.setOnClickListener(this);
btn_check.setOnClickListener(this);
btn_deleteone.setOnClickListener(this);
btn_deleteTable.setOnClickListener(this);
btn_newTable.setOnClickListener(this);
myOpenHelper = new MySQLiteOpenHelper(this);// 实例一个数据库辅助器
//备注1 ----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:
// if (!path.exists()) {// 目录存在返回false
// path.mkdirs();// 创建一个目录
// }
// if (!f.exists()) {// 文件存在返回false
// try {
// f.createNewFile();//创建文件
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
}
@Override
public void onClick(View v) {
try {
//备注2----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:
// mysql = SQLiteDatabase.openOrCreateDatabase(f, null);
//备注3--- 如果想把数据库文件默认放在系统中,那么创建数据库mysql如下操作:
mysql = myOpenHelper.getWritableDatabase(); // 实例数据库
if (v == btn_addOne) {// 添加数据
// ---------------------- 读写句柄来插入---------
// ContentValues 其实就是一个哈希表HashMap, key值是字段名称,
//Value值是字段的值。然后 通过 ContentValues 的 put 方法就可以
//把数据放到ContentValues中,然后插入到表中去!
ContentValues cv = new ContentValues();
cv.put(MySQLiteOpenHelper.TEXT, "测试新的数据");
mysql.insert(MySQLiteOpenHelper.TABLE_NAME, null, cv);
// inser() 第一个参数 标识需要插入操作的表名
// 第二个参数 :默认传null即可
// 第三个是插入的数据
// ---------------------- SQL语句插入--------------
// String INSERT_DATA =
// "INSERT INTO himi (id,text) values (1, '通过SQL语句插入')";
// db.execSQL(INSERT_DATA);
tv.setText("添加数据成功!点击查看数据库查询");
} else if (v == btn_deleteone) {// 删除数据
// ---------------------- 读写句柄来删除
mysql.delete("himi", MySQLiteOpenHelper.ID + "=1", null);
// 第一个参数 需要操作的表名
// 第二个参数为 id+操作的下标 如果这里我们传入null,表示全部删除
// 第三个参数默认传null即可
// ----------------------- SQL语句来删除
// String DELETE_DATA = "DELETE FROM himi WHERE id=1";
// db.execSQL(DELETE_DATA);
tv.setText("删除数据成功!点击查看数据库查询");
} else if (v == btn_check) {// 遍历数据
//备注4------
Cursor cur = mysql.rawQuery("SELECT * FROM "
+ MySQLiteOpenHelper.TABLE_NAME, null);
if (cur != null) {
String temp = "";
int i = 0;
while (cur.moveToNext()) {//直到返回false说明表中到了数据末尾
temp += cur.getString(0);
// 参数0 指的是列的下标,这里的0指的是id列
temp += cur.getString(1);
// 这里的0相对于当前应该是咱们的text列了
i++;
temp += " "; // 这里是我整理显示格式 ,呵呵~
if (i % 3 == 0) // 这里是我整理显示格式 ,呵呵~
temp += " ";// 这里是我整理显示格式 ,呵呵~
}
tv.setText(temp);
}
} else if (v == btn_edit) {// 修改数据
// ------------------------句柄方式来修改 -------------
ContentValues cv = new ContentValues();
cv.put(MySQLiteOpenHelper.TEXT, "修改后的数据");
mysql.update("himi", cv, "id " + "=" + Integer.toString(3), null);
// ------------------------SQL语句来修改 -------------
// String UPDATA_DATA =
// "UPDATE himi SET text='通过SQL语句来修改数据' WHERE id=1";
// db.execSQL(UPDATA_DATA);
tv.setText("修改数据成功!点击查看数据库查询");
} else if (v == btn_deleteTable) {// 删除表
mysql.execSQL("DROP TABLE himi");
tv.setText("删除表成功!点击查看数据库查询");
} else if (v == btn_newTable) {// 新建表
String TABLE_NAME = "himi";
String ID = "id";
String TEXT = "text";
String str_sql2 = "CREATE TABLE " + TABLE_NAME + "(" + ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + TEXT
+ " text );";
mysql.execSQL(str_sql2);
tv.setText("新建表成功!点击查看数据库查询");
}
// 删除数据库:
// this.deleteDatabase("himi.db");
} catch (Exception e) {
tv.setText("操作失败!");
} finally {// 如果try中异常,也要对数据库进行关闭
mysql.close();
}
}
}

以上代码中我们实现了两种存储方式:

一种存储默认系统路径/data-data-com.himi-databases下,另外一种则是保存在了/sdcard-himi下,生成数据库文件himi.db

分享到:
评论

相关推荐

    Android数据存储SQLite.docx

    在 Android 中,有多种数据存储方式,包括 SharedPreferences、内部文件存储、SD 卡存储和 SQLite 数据库存储等。本文将详细介绍 Android 中的数据存储方式,特别是 SQLite 数据库存储。 一、SharedPreferences ...

    Android应用程序中使用自己的SQLite数据库

    - 记得在AndroidManifest.xml中添加读写外部存储的权限,如果需要在外部存储(如SD卡)中操作数据库。 总结来说,要在Android应用中使用自己的SQLite数据库,你需要准备符合Android规范的数据库文件,将其放置在...

    Android 四种存储 SharedPreferences 内存 SD卡 SQLite数据库

    Android提供了多种方式来保存应用程序的数据,包括SharedPreferences、内存存储、SD卡存储以及SQLite数据库。这四种存储方式各有特点,适用于不同的场景需求。 1. SharedPreferences: SharedPreferences是一种轻量...

    Android-实验报告-Sqlite-数据库操作.docx

    这篇实验报告主要涉及了在Android平台上使用SQLite数据库进行文件操作和数据管理的相关知识。以下是详细的解释: 1. **SQLite数据库**:SQLite是一个轻量级的、嵌入式的关系型数据库,广泛应用于移动设备如Android...

    Android 登录注册 数据库SQLite 验证,导出数据库到SD卡

    在这个方法中,我们首先获取SD卡和内部存储的路径,然后创建文件输入和输出通道,将数据库从内部存储复制到SD卡上。记得处理可能抛出的异常,并向用户显示导出结果。 以上就是Android应用中使用SQLite进行登录注册...

    Android应用源码之数据库文件写入SD卡-IT计算机-毕业设计.zip

    在Android应用开发中,将数据库文件写入SD卡是一个常见的需求,特别是在处理大量数据或需要离线存储的情况下。本项目“Android应用源码之数据库文件写入SD卡”是一个很好的学习资源,适合于毕业设计或者对Android...

    android studio使用SQLiteOpenHelper()建立数据库的方法

    (2)文件存储:内部存储——应用程序私有文件外部存储——SD卡资源文件——只读( RAW 、XML) (3)数据库存储——SQLiteDataBase 今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立...

    Android应用源码之数据库文件写入SD卡.zip

    这个源码示例可以帮助开发者理解如何在Android应用中操作SQLite数据库,以及如何将数据库文件安全地迁移到外部存储。通过学习这些知识点,开发者可以更好地设计和实现数据存储方案,满足不同场景的需求。

    安卓Android源码——数据库文件写入SD卡.zip

    在安卓(Android)平台上,开发人员经常需要处理数据存储问题,包括将数据库文件保存到外部存储,也就是我们常说的SD卡。本资料“安卓Android源码——数据库文件写入SD卡.zip”提供了一个实例,展示了如何在Android...

    基于SQLite3的Android手机数据恢复技术的研究

    在Android手机中,短信、联系人和通话记录等文本信息以SQLite3数据库的形式存储,而多媒体文件通常存储在SD卡上,不受此恢复技术的影响。删除的数据在物理层面上并未立即清除,只是标记为自由区,如果页内仍有其他...

    Android 读写文件和数据库(SQLite)

    1. **存储路径**:Android提供了多种存储文件的方式,包括内部存储、外部存储(公共和私有)以及外部SD卡。内部存储用于应用程序私有的数据,外部存储则允许其他应用访问。使用`getFilesDir()`获取内部存储的私有...

    android导入外部sqlite db文件源码

    在Android开发中,有时我们需要将已经存在的SQLite数据库文件导入到应用程序中,以便在运行时使用。这个过程通常涉及几个关键步骤,包括读取外部DB文件、复制到应用的数据库路径以及处理权限问题。以下是对“android...

    查看sqlite数据库工具

    2. **连接数据库**:打开SQLiteSpy后,点击“File”菜单,选择“Open Database...”,然后选择Android设备上的SQLite数据库文件(如`.db`或`.db3`格式)。在Android开发环境中,通常需要通过ADB(Android Debug ...

    SQLite 存储在SD卡

    在本案例中,我们将讨论如何将 SQLite 数据库与 ListView 结合,并将数据库存储在 SD 卡上。 首先,我们来看如何在 Android 应用中创建和使用 SQLite 数据库。Android 提供了一个 SQLiteOpenHelper 的抽象类,它...

    android sqlite数据的备份与还原

    - 备份的基本思路是读取SQLite数据库中的所有数据,然后将其保存到外部存储(如SD卡)为一个SQLite的dump文件或者纯文本文件。这可以通过执行SQL的`sqlite3`命令来实现,比如`sqlite3 database.db .dump > backup....

    Android 导出数据库到Excel表格功能

    在Android应用开发中,有时需要将应用程序内部的SQLite数据库数据导出到常见的Excel格式,以便用户可以方便地查看、编辑或共享数据。这个过程涉及到Android的数据库操作、文件读写以及与Excel文件格式的交互。以下是...

    基于sqlite数据库的二手车源码

    选择图片后,通常需要进行图像处理(如裁剪、缩放),最后将处理后的图片保存到本地(如SD卡或内部存储),并更新到用户头像显示的位置。 综上所述,这个源码项目涵盖了Android开发中的多个关键知识点,包括SQLite...

    精选_毕业设计_基于Android和SQLite数据库的手机音乐播放器_完整源码

    开发者需要编写代码来获取外部存储(如SD卡)上的音乐文件,并将相关信息存入SQLite数据库。 **八、权限管理** 考虑到Android系统的权限模型,开发者必须在Manifest文件中声明所需的权限,如读取外部存储权限,以便...

    android demo,sd卡文件存储和data下文件存储。

    在使用SD卡存储时,需要注意权限问题。自Android 6.0(API级别23)以来,应用需要在运行时请求`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 **2. data下文件存储** 内部data目录下的文件存储主要用于...

Global site tag (gtag.js) - Google Analytics