Android內建SQLite功能,讓android App可以利用它儲存資料。

Android SDK提供的類別庫以簡化使用SQLite資料庫的操作,

使用時只需用到一些基本的SQL語法即可。

 

  • 使用openOrCreateDataBase()建立資料庫
SQLiteDatabase db;
db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE, null);

 

  • 使用CREATE TABLE建立資料表
String createTable = "CREATE TABLE IF NOT EXISTS " + tb_name +
                     " (name VARCHAR(32), " + "phone VARCHAR(16), " + "email VARCHAR(64))";

 

  •  用execSQL()方法執行"CREATE TABLE"敘述
SQLiteDatabase db = openOrCreateDatabase(...);
String createTable = "CREATE TABLE IF NOT EXISTS " + tb_name +
                     " (name VARCHAR(32), " + "phone VARCHAR(16), " + "email VARCHAR(64))";
db.execSQL(createTable);

 

  • insert()方法及ContentValues物件新增資料
ContentValues cv = new ContentValues(3);
        
        cv.put("name", name);
        cv.put("phone", phone);
        cv.put("email", email);
        
        db.insert(tb_name, null, cv);

 

用以上內容試著建立一個資料庫

MainActivity.java

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
    static final String db_name="testDB";    // 資料庫名稱
    static final String tb_name="test";        // 資料表名稱
    SQLiteDatabase db;    //資料庫
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 開啟或建立資料庫
        db = openOrCreateDatabase(db_name,  Context.MODE_PRIVATE, null);
        
        String createTable="CREATE TABLE IF NOT EXISTS " + 
                tb_name +            // 資料表名稱
                "(name VARCHAR(32), " +    //姓名欄位
                "phone VARCHAR(16), " +    //電話欄位
                "email VARCHAR(64))";    //Email欄位
        db.execSQL(createTable);    // 建立資料表

        // 插入 2筆資料
        addData("Flag Publishing Co.","02-23963257","service@flag.com.tw");
        addData("PCDIY Magazine","02-23214335","service@pcdiy.com.tw");
        
        TextView txv=(TextView)findViewById(R.id.txv);
        txv.setText("資料庫檔路徑: "+db.getPath()+ "\n\n" +   // 取得及顯示資料庫資訊
                "資料庫分頁大小: "+db.getPageSize() + " Bytes\n\n" +
                "資料庫大小上限: "+db.getMaximumSize() + " Bytes");
        
        db.close();        // 關閉資料庫
    }

    private void addData(String name, String phone, String email) {
        ContentValues cv=new ContentValues(3);    // 建立含3個資料項目的物件
        cv.put("name", name);
        cv.put("phone", phone);
        cv.put("email", email);

        db.insert(tb_name, null, cv);    // 將資料加到資料表
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

activity_main.xml 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.hellosqlite.MainActivity" >

    <TextView
        android:id="@+id/txv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world"
        android:textSize="22sp" />

</RelativeLayout>

 

arrow
arrow
    文章標籤
    SQLite android
    全站熱搜
    創作者介紹
    創作者 Will 的頭像
    Will

    Will的部落格

    Will 發表在 痞客邦 留言(0) 人氣()