• Android开发点滴(13) Android数据库随同Android应用一同发布


    实现方法:将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                 nullnullnullnullnull);
    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 }
  • 相关阅读:
    iOS-UISearchBar去掉边线
    iOS-Pods里三方文件导入找不到头文件
    iOS-如何导出P12文件
    Roman to Integer
    ZigZag Conversion
    Merge Two Sorted Lists
    Range Sum Query
    Range Sum Query
    Range Sum Query 2D
    Integer to English Words
  • 原文地址:https://www.cnblogs.com/cody1988/p/2224366.html
Copyright © 2020-2023  润新知