857
技術社區[雲棲]
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