閱讀857 返回首頁    go 阿裏雲 go 技術社區[雲棲]


SQLiteDatabase

package com.demo.database;

import java.io.File;

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.database.sqlite.SQLiteStatement;
import android.os.Bundle;   
import android.widget.ListAdapter;   
import android.widget.ListView;   
import android.widget.SimpleCursorAdapter;   
import android.widget.TextView;
  
public class main extends Activity {   
    /** Called when the activity is first created. */  
    private ListView lv = null;   
    private TextView tv=null;
    private SQLiteDatabase mSQLiteDatabase = null;  
    private SQLiteStatement st=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)";   
	private File path = new File("/sdcard/myfile");// 創建目錄
	private File f = new File("/sdcard/myfile/test.db");// 創建文件

    @Override  
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);   
        lv = (ListView) this.findViewById(R.id.ListView01);   
        tv = (TextView) this.findViewById(R.id.counttip); 
        try {   
           // mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME,   
           //         Activity.MODE_PRIVATE, null);   
        	if (!path.exists()) {// 目錄存在返回false
    			path.mkdirs();// 創建一個目錄
    		}
    		if (!f.exists())f.createNewFile();//創建文件  
    		mSQLiteDatabase=SQLiteDatabase.openOrCreateDatabase(f, null); 

        } catch (Exception ex) {   
            this.ShowDialog("打開或者創建數據庫異常:" + ex.getMessage());   
        }   
        try {   
            mSQLiteDatabase.execSQL(CREATE_TABLE);  
            String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","  
            + COLUMN_AGE + ")VALUES(?,?)";   
             st= mSQLiteDatabase.compileStatement(str);
        } catch (Exception ex) {   
            this.ShowDialog("創建表異常:" + ex.getMessage());   
        }   
         this.InsertData3();   
         this.InsertData4();   
//         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());   
        }   
    }   
    /**  
     * 利用statement插入數據-execSQL  
     */  
    private void InsertData3() { 
    	
        try { 
        	
           
           st.bindString(1, "王陽");
           st.bindLong(2, 50);
            st.execute();
             
            //mSQLiteDatabase.execSQL(str, ob);   
        } catch (Exception ex) {   
            this.ShowDialog("插入數據異常:" + ex.getMessage());   
        }   
    }   
    /**  
     * 利用statement插入數據-execSQL  
     */  
    private void InsertData4() { 
    	
        try { 
        	
           
           st.bindString(1, "周軍");
           st.bindLong(2, 33);
            st.execute();
             
            //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.list, cursor, new String[] { COLUMN_ID,   
                                COLUMN_NAME, COLUMN_AGE },   
                        new int[] { R.id.TextView1, R.id.TextView2,   
                                R.id.TextView3 });   
                lv.setAdapter(adapter);   
                
                tv.setText(Integer.toString(cursor.getCount()));
              
            }   
        } 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();   
    }   
}  

最後更新:2017-04-02 18:14:51

  上一篇:go C++實現的一個簡單兩個大數相加程序!
  下一篇:go rhel6 kvm 備忘