有了interface,就不用重複輸入欄位名稱
/res/package name/TableInfo.java
public interface TableInfo {
public static final String TABLE_NAME = "myTable";
public static final String ID = "id";
public static final String AGE = "time";
public static final String NAME = "title";
}
2) 建立一個class來幫你管理SQLite資料庫的建造和版本更新
/res/package name/Helper.java
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class
Helper
extends SQLiteOpenHelper implements
TableInfo
{ private static final String DATABASE_NAME = "mydb.db" ;
//資料庫檔名
private static final int DATABASE_VERSION = 1;
//資料庫版本
public Helper(Context context) {
//constructor
super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) {
//建立SQL的Table
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + ID+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + AGE+ " INTEGER," + NAME + " TEXT NOT NULL);" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
//刪除old table
onCreate(db);
//建立新table
} }
3) 建立一個XML
XML用來顯示結果
res/layout/sqlsample.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</ScrollView>
4) 主程式,把全部結合在一起
/res/package name/SqlSample.java
import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.TextView; public class
SqlSample
extends Activity implements
TableInfo
{ private Helper sHelper
; private static String[] FROM = { ID, AGE, NAME, }; private static String ORDER_BY = AGE + " DESC" ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(
R.layout.sqlsample
);
sHelper
=new Helper(this); try { addRow("不菁云",18); Cursor cursor = getTable(); showTable(cursor); } finally {
sHelper
.close(); } } private void addRow(String name, int age){
// 加入一個記錄
SQLiteDatabase db =
sHelper
.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(AGE, age); values.put(NAME, name); db.insertOrThrow(TABLE_NAME, null, values); } private Cursor getTable() { SQLiteDatabase db =
sHelper
.getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, FROM, null, null, null, null, ORDER_BY); startManagingCursor(cursor); return cursor; } private void showTable(Cursor cursor) { StringBuilder sBuilder = new StringBuilder( "id 年齡 姓名\n" ); while (cursor.moveToNext()) { long id = cursor.getLong(0); long age = cursor.getLong(1); String name = cursor.getString(2); sBuilder.append(id).append(": " ); sBuilder.append(age).append("歲 " ); sBuilder.append(name).append("\n" ); }
// XML 顯示資訊
TextView text = (TextView) findViewById(R.id.text); text.setText(sBuilder); } }
5) 顯示執行結果
沒有留言:
張貼留言