建数据库
首先,建立sqlite数据库appdata.db,在其中建表填数据:CREATE TABLE user (name TEXT);INSERT INTO user VALUES ('letian');INSERT INTO user VALUES ('xiaoming');
建立Android项目
这个项目使用了eclipse + ADT + Genymotion。 使用eclipse建立android项目,将appdata.db文件复制到项目的 /assets目录下。修改布局文件/res/layout/activity_main.xml
修改Java文件/src/com/example/initsqlite/MainActivity.java
package com.example.initsqlite;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity { String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/com.example.initsqlite/databases/"; String DB_NAME = "appdata.db"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getSqliteContent(); } }); } /** * 获取数据库信息 */ public void getSqliteContent(){ File f = new File(DB_PATH + DB_NAME); if (!f.exists()) { prepareDB(); } Toast.makeText(MainActivity.this, "获取数据库内容", Toast.LENGTH_SHORT).show(); SQLiteDatabase db = openOrCreateDatabase(DB_PATH+DB_NAME, Context.MODE_PRIVATE, null); Cursor c = db.rawQuery("SELECT NAME FROM user", new String[]{}); String result = ""; while (c.moveToNext()) { String name = c.getString(c.getColumnIndex("name")); result = result + name + "\n"; } Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show(); } /** * 准备数据库 */ public void prepareDB() { if ((new File(DB_PATH+DB_NAME)).exists() == false) { Toast.makeText(MainActivity.this, "检查到没有数据库,准备数据库ing", Toast.LENGTH_SHORT).show(); // 如 SQLite 数据库文件不存在,再检查一下 database 目录是否存在 File f = new File(DB_PATH); // 如 database 目录不存在,新建该目录 if (!f.exists()) { f.mkdir(); } try { // 得到 assets 目录下我们实现准备好的 SQLite 数据库作为输入流 InputStream is = getAssets().open(DB_NAME); // 输出流 OutputStream os = new FileOutputStream(DB_PATH + DB_NAME); // 文件写入 byte[] buffer = new byte[1024]; int length; while ((length = is.read(buffer)) > 0) { os.write(buffer, 0, length); } // 关闭文件流 os.flush(); os.close(); is.close(); Toast.makeText(MainActivity.this, "数据库已经准备好啦", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(MainActivity.this, "数据库已经存在", Toast.LENGTH_SHORT).show(); } }}
程序分析
运行程序,效果图如下:![](http://static.oschina.net/uploads/space/2014/0527/193054_9dHy_940565.png)
第一次点击“获取数据库内容“这个按钮时,程序会依次通过Toast依次显示:
检查到没有数据库,准备数据库ing
数据库已经准备好啦
获取数据库内容
letianxiaoming
最后依次显示的是user表中的内容。 在DDMS下,可以看到 /data/data/com.example.initsqlite目录内容变为:
![](http://static.oschina.net/uploads/space/2014/0527/194225_lDw5_940565.png)
获取数据库内容
letianxiaoming