博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发点滴(13) -- Android数据库随同Android应用一同发布
阅读量:7004 次
发布时间:2019-06-27

本文共 2333 字,大约阅读时间需要 7 分钟。

 

实现方法:将Android数据库文件放到res/raw目录下,然后读取db文件,并且将其写到data/data/pkg_name/databases/目录下,获取SDCard中。

 1 package com.sqllite.activity;
 2 
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 
 9 import android.app.Activity;
10 import android.content.res.Resources;
11 import android.database.Cursor;
12 import android.database.sqlite.SQLiteDatabase;
13 import android.os.Bundle;
14 
15 
public 
class SqlLiteActivity extends Activity {
16     
private File file = 
null;
17     
private File dir = 
null;
18 
19     @Override
20     
public 
void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.main);
23 
24         
//
 第一次运行应用程序时,加载数据库到data/data/<pkg_name>/database/<db_name>
25 
        dir = 
new File(
"
data/data/
" + getPackageName() + 
"
/databases
");
26         
if (!dir.exists() || !dir.isDirectory()) {
27             dir.mkdir();
28         }
29         file = 
new File(dir, 
"
db.db3
");
30 
31         
if (!file.exists()) {
32             FileUtils.loadDbFile(R.raw.db, file, getResources(),
33                     getPackageName());
34         }
35 
36         
//
 读取数据库
37 
        
38         SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(file, 
null);
39         
//
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);
40 
        Cursor cursor = db.query(
"
people
"
new String[] { 
"
id
"
"
name
"
"
age
"
"
address
" },
41                 
null
null
null
null
null);
42         
43         
while(cursor.moveToNext()){
44             System.
out.println(cursor.getInt(
0));
45         }
46         cursor.close();
47     }
48 
49 }
50 
51 
class FileUtils {
52 
53     
public 
static 
void loadDbFile(
int rawId, File file, Resources res,
54             String pkgname) {
55         InputStream dbInputStream = res.openRawResource(R.raw.db);
56         FileOutputStream fos = 
null;
57 
58         
try {
59             fos = 
new FileOutputStream(file);
60 
61             
byte[] bytes = 
new 
byte[
1024];
62             
int length;
63             
while ((length = dbInputStream.read(bytes)) > 
0) {
64                 fos.write(bytes, 
0, length);
65             }
66 
67         } 
catch (FileNotFoundException e) {
68             
//
 TODO Auto-generated catch block
69 
            e.printStackTrace();
70         } 
catch (IOException e) {
71             
//
 TODO Auto-generated catch block
72 
            e.printStackTrace();
73         } 
finally {
74             
try {
75                 fos.close();
76                 dbInputStream.close();
77             } 
catch (IOException e) {
78                 
//
 TODO Auto-generated catch block
79 
                e.printStackTrace();
80             }
81         }
82     }
83 }

 

转载于:https://www.cnblogs.com/cody1988/archive/2011/10/25/2224366.html

你可能感兴趣的文章