Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android下創建一個SQLite數據庫,androidsqlite

Android下創建一個SQLite數據庫,androidsqlite

編輯:關於android開發

Android下創建一個SQLite數據庫,androidsqlite


數據庫:SQLite(輕量級,嵌入式的數據庫)

大量的相似結構的數據的儲存,快速的查詢。特殊的文件(按照一定的格式生成)

數據庫的創建

創建文件

1.聲明文件對象,文件是不會被創建出來的。

File file = new File("文件名稱");

2.寫文件(文件才會被創建出來)

FileOutputStream fos = new FileOutputStream(file);

fos.write("hdahfdsaklfh".getbytes());

創建數據庫

1.實現SQLiteOpenHelper的子類PersonSQLiteOpenHelper

public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {

    public PersonSQLiteOpenHelper(Context context, String name,
            CursorFactory factory, int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }
}

SQLiteOpenHelper的幾個參數的解釋如下:

android.database.sqlite.SQLiteOpenHelper.SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version)

Create a helper object to create, open, and/or manage a database. This method always returns very quickly. The database is not actually created or opened until one of getWritableDatabase or getReadableDatabase is called.

Parameters:
context to use to open or create the database
name of the database file, or null for an in-memory database
factory to use for creating cursor objects, or null for the default
version number of the database (starting at 1); if the database is older, onUpgrade will be used to upgrade the database; if the database is newer, onDowngrade will be used to downgrade the database

2.getWritableDatabase/getReadableDatabase()

新建TestPersonDB.java

package com.wuyudong.db.test;

import com.wuyudong.db.PersonSQLiteOpenHelper;

import android.test.AndroidTestCase;

public class TestPersonDB extends AndroidTestCase {
    public void testCreateDB() throws Exception {
        PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());
        helper.getWritableDatabase();
    }
}

3.onCreate() 數據庫第一次創建的執行的方法,適合做數據庫表結構的初始化

    // Called when the database is created for the first time.
    // 在數據庫第一次創建的時候執行的方法
    // 如果數據庫已經創建完畢,就不會再去執行了。
    // 適合做數據庫表結構的初始化操作
    // db代表的就是當前的數據庫
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 初始化數據庫的表結構
        db.execSQL("create table person (id integer primary key autoincrement, name varchar(20), number varchar(20))");
    }

注意:

sqlite數據庫是一個嵌入式輕量級的數據庫,內部不區分數據類型的,不對數據的長度校驗。

新建AndroidTest工程test

將AndroidManifest.xml中的如下相關的代碼復制到本項目的AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wuyudong.db.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.wuyudong.db" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />
    </application>

</manifest>

復制後的代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wuyudong.db"
    android:versionCode="1"
    android:versionName="1.0" >

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.wuyudong.db" />

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="android.test.runner" />

        <activity
            android:name="com.wuyudong.db.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

項目結構如下:

PersonSQLiteOpenHelper.java完整代碼如下:

package com.wuyudong.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {

    /**
     * 定義一個數據庫創建的幫助類,裡面有兩個方法需要實現 相當於 file類
     * 
     * @author Administrator
     * 
     */
    public PersonSQLiteOpenHelper(Context context) {
        // context 上下文
        // person.db 數據庫文件名稱
        // factory 游標工廠
        // version 數據庫的版本號 從1開始
        super(context, "person.db", null, 1);
        // TODO Auto-generated constructor stub
    }

    // Called when the database is created for the first time.
    // 在數據庫第一次創建的時候執行的方法
    // 如果數據庫已經創建完畢,就不會再去執行了。
    // 適合做數據庫表結構的初始化操作
    // db代表的就是當前的數據庫
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 初始化數據庫的表結構
        db.execSQL("create table person (id integer primary key autoincrement, name varchar(20), number varchar(20))");
    }

    // 當數據庫的版本號發生升級的時候調用。
    // 數據庫只能升級不能降級。
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }
}

運行程序

打開person.db

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved