Android SQLite 制作實例 (簡單、易學、快速)

1) 建立一個interface
有了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) 顯示執行結果

沒有留言:

張貼留言