vvsongsunny 发表于 2013-1-30 01:16:50

Android中SQLiteDatabase的使用

链接http://aina-hk55hk.iteye.com/blog/698794
package com.Aina.Android;   

import android.app.Activity;   
import android.app.AlertDialog;   
import android.content.ContentValues;   
import android.content.DialogInterface;   
import android.database.Cursor;   
import android.database.sqlite.SQLiteDatabase;   
import android.os.Bundle;   
import android.widget.ListAdapter;   
import android.widget.ListView;   
import android.widget.SimpleCursorAdapter;   

public class Test extends Activity {   
    /** Called when the activity is first created. */
    private ListView lv = null;   
    private SQLiteDatabase mSQLiteDatabase = null;   
    private static final String DATABASE_NAME = "Test.db";   
    private static final String TABLE_NAME = "table_test";   
    private static final String COLUMN_ID = "_id";// INTEGER PRIMARY KEY   
    private static final String COLUMN_NAME = "name";// TEXT   
    private static final String COLUMN_AGE = "age";// INTEGER   
    private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "
            + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY,"
            + COLUMN_NAME + " TEXT," + COLUMN_AGE + " INTEGER)";   

    @Override
    public void onCreate(Bundle savedInstanceState) {   
      super.onCreate(savedInstanceState);   
      setContentView(R.layout.main);   
      lv = (ListView) this.findViewById(R.id.ListView01);   
      try {   
            mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME,   
                  Activity.MODE_PRIVATE, null);   
      } catch (Exception ex) {   
            this.ShowDialog("打开或者创建数据库异常:" + ex.getMessage());   
      }   
      try {   
            mSQLiteDatabase.execSQL(CREATE_TABLE);   
      } catch (Exception ex) {   
            this.ShowDialog("创建表异常:" + ex.getMessage());   
      }   
      // this.InsertData();   
      // this.InsertData2();   
      // this.AddData();   
      // this.UpdateData();   
      // this.UpdateData2();   
      // this.UpdateData3();   
      // this.DeleteData();   
      // this.DeleteData2();   
      // this.DeleteData3();   
      this.SelectData();   
    }   

    @Override
    protected void onPause() {         
      super.onPause();   
      mSQLiteDatabase.close();// 关闭数据库   
    }   

    /**
   * 插入数据-execSQL
   */
    private void InsertData() {   
      try {   
            String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","
                  + COLUMN_AGE + ")VALUES('张三',30)";   
            mSQLiteDatabase.execSQL(str);   
      } catch (Exception ex) {   
            this.ShowDialog("插入数据异常:" + ex.getMessage());   
      }   

    }   

    /**
   * 插入数据-execSQL
   */
    private void InsertData2() {   
      try {   
            String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","
                  + COLUMN_AGE + ")VALUES(?,?)";   
            Object[] ob = new Object[] { "王五", 50 };   
            mSQLiteDatabase.execSQL(str, ob);   
      } catch (Exception ex) {   
            this.ShowDialog("插入数据异常:" + ex.getMessage());   
      }   
    }   

    /**
   * 插入数据-insert() nullColumnHack,这个参数需要传入一个列名。SQL标准并不允许插入所有列均为空的一行数据,
   * 所以当传入的initialValues值为空或者为0时
   * ,用nullColumnHack参数指定的列会被插入值为NULL的数据,然后再将此行插入到表中。
   */
    private void AddData() {   
      try {   
            ContentValues cv = new ContentValues();   
            cv.put(COLUMN_NAME, "李四");   
            cv.put(COLUMN_AGE, 40);   
            // long num = mSQLiteDatabase.insert(TABLE_NAME, COLUMN_NAME, cv);   
            long num = mSQLiteDatabase.insertOrThrow(TABLE_NAME, null, cv);   
            this.setTitle("num==" + num);   
      } catch (Exception ex) {   
            this.ShowDialog("插入数据异常:" + ex.getMessage());   
      }   

    }   

    /**
   * 更新数据
   */
    private void UpdateData() {   
      try {   
            String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE   
                  + " = 25 WHERE _id=1";   
            mSQLiteDatabase.execSQL(str);   
      } catch (Exception ex) {   
            this.ShowDialog("更新数据异常:" + ex.getMessage());   
      }   
    }   

    /**
   * 更新数据
   */
    private void UpdateData2() {   
      try {   
            String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE   
                  + " = ? WHERE _id=?";   
            Object[] Ob = new Object[] { 33, 2 };   
            mSQLiteDatabase.execSQL(str, Ob);   
      } catch (Exception ex) {   
            this.ShowDialog("更新数据异常:" + ex.getMessage());   
      }   
    }   

    /**
   * 更新数据
   */
    private void UpdateData3() {   
      try {   
            ContentValues cv = new ContentValues();   
            cv.put(COLUMN_NAME, "李四4");   
            cv.put(COLUMN_AGE, 43);   
            int num = mSQLiteDatabase.update(TABLE_NAME, cv,   
                  COLUMN_NAME + "=?", new String[] { "李四" });   
            this.setTitle("修改行数num=" + num);   
      } catch (Exception ex) {   
            this.ShowDialog("更新数据异常:" + ex.getMessage());   
      }   
    }   

    /**
   * 删除数据
   */
    private void DeleteData() {   
      try {   
            String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=3";   
            mSQLiteDatabase.execSQL(str);   
      } catch (Exception ex) {   
            this.ShowDialog("删除数据异常:" + ex.getMessage());   
      }   
    }   

    /**
   * 删除数据
   */
    private void DeleteData2() {   
      try {   
            String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=?";   
            mSQLiteDatabase.execSQL(str, new Object[] { 2 });   
      } catch (Exception ex) {   
            this.ShowDialog("删除数据异常:" + ex.getMessage());   
      }   
    }   

    /**
   * 删除数据
   */
    private void DeleteData3() {   
      try {   
            int num = mSQLiteDatabase.delete(TABLE_NAME, "_id=1", null);   
            this.setTitle("删除行数num=" + num);   
      } catch (Exception ex) {   
            this.ShowDialog("删除数据异常:" + ex.getMessage());   
      }   
    }   

    /**
   * 查询数据
   */
    private void SelectData() {   
      try {   
            String sql = "SELECT * FROM " + TABLE_NAME;   
            Cursor cursor = mSQLiteDatabase.rawQuery(sql,null);   
            // Cursor cursor = mSQLiteDatabase.query(TABLE_NAME, new String[] {   
            // COLUMN_ID, COLUMN_NAME, COLUMN_AGE }, COLUMN_NAME + "=?",   
            // new String[] { "李四" }, null, null, null);   
            if (cursor != null) {   
                ListAdapter adapter = new SimpleCursorAdapter(this,   
                        R.layout.ss, cursor, new String[] { COLUMN_ID,   
                              COLUMN_NAME, COLUMN_AGE },   
                        new int[] { R.id.TextView1, R.id.TextView2,   
                              R.id.TextView3 });   
                lv.setAdapter(adapter);   
            }   
      } catch (Exception ex) {   
            this.ShowDialog("查询数据异常:" + ex.getMessage());   
      }   
    }   
    /**
   * 删除表
   */
    private void DropTable(){   
      try{   
            String sql = "DROP TABLE "+TABLE_NAME;   
            mSQLiteDatabase.execSQL(sql);   
      }catch(Exception ex){   
            this.ShowDialog("删除表异常:"+ex.getMessage());   
      }   
    }   
    /**
   * 删除数据库
   */
    private void DropDatabase(){         
      try{   
            this.deleteDatabase(DATABASE_NAME);   
      }catch(Exception ex){   
            this.ShowDialog("删除数据库异常:"+ex.getMessage());   
      }   
    }   
    /**
   * 提示对话框
   * @param msg
   */
    private void ShowDialog(String msg) {   
      new AlertDialog.Builder(this).setTitle("提示").setMessage(msg)   
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {   

                  @Override
                  public void onClick(DialogInterface dialog, int which) {   

                  }   

                }).show();   
    }   
}
2.main.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>   
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">   
    <TextView android:layout_width="fill_parent"
      android:layout_height="wrap_content" android:text="@string/hello" />   
    <ListView android:id="@+id/ListView01" android:layout_width="fill_parent"
      android:layout_height="wrap_content"></ListView>   
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<ListView android:id="@+id/ListView01" android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>



3.ss.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>   
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:paddingTop="5dip" android:paddingBottom="5dip" android:paddingLeft="5dip"
    android:layout_height="wrap_content">   
    <TextView android:id="@+id/TextView1" android:layout_width="wrap_content"
      android:layout_height="wrap_content"         
      android:text="" />   
    <TextView android:id="@+id/TextView2" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textSize="20px" android:layout_marginLeft="50dip" android:paddingRight="50dip"
      android:text="" />   
    <TextView android:id="@+id/TextView3" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="" />
页: [1]
查看完整版本: Android中SQLiteDatabase的使用