編輯:關於Android編程
*/
眾所周知,數據庫是很重要的。市面上的大大小小的軟件差不多都要用到數據庫。
在Android中數據庫為SQlite,因為小巧便捷,占用的空間少,易於操作。使用很受歡迎。
數據庫不外乎查詢(query)新增(insert)修改(update)刪除(delete)。
本例子
1.使用Menu按鍵來做數據庫的查詢(query)新增(insert)修改(update)刪除(delete)。
2.搭配ListView Widget來觸發單擊事件和鼠標滾輪事件。
下面就看一下數據庫。
首先建一個輔助類MyDataBase繼承SQLiteOpenHelpe,必須實現它的onCreate()和 onUpdate()方法;
數據庫創建時,會調用onCreate()方法,所以可將要添加的表(table)寫在裡面。
創建的方法如下所示:
[java]
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
/* 建立表table */
Log.i(TAG, " onCreate() ");
String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_id
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + " " + FIELD_TEXT
+ " TEXT)";
db.execSQL(sql);
}
當更新數據庫時會調用onUpdate()方法。
所以要將更新table的SQL寫在裡面。
[java]
//更新數據庫
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.i(TAG, " onUpgrade() ");
//刪除表的SQL
String sql = "DROP TABLE IF EXITS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
2.得到SQLiteDatabasedb對象,
通過db=MyOpenHelper.getReadableDatabase();//得到只讀的數據存儲對象,如果數據庫不存在擇創建一個數據庫
db= MyOpenHelper.getWritableDatabase();//得到可讀可寫的數據哭對象。
如果數據庫不存在擇創建一個數據庫
數據庫的文件會自行產生在/data/data/package名稱/database下在Eclipse來查詢數據庫是否創建成功。
根據自己的需要選擇不同的方法;
到此我們的數據庫就創建成功了。
(一)查詢:
Cursor cursor=db.query(table,columns, selection, selectionArgs, groupBy, having,orderBy);
返回的是一個游標對象。
游標的作用是指項數據庫的表的行我們可以通過 cursor.moveToNext();或者
Cursor.moveToPosition();來控制游標的位置;
字段雖然比較多,但了解數據庫的人應該很清楚,
第一個參數是表名table_name
第二個參數是要查詢的字段
第三個參數是查詢的條件
這裡說一下這個查詢條件
查詢所有的數據:
//asc是升序,desc是降序,默認為asc
mSQLiteDatabase.query(TABLENAME, new String[] { ID, stuName, stuNumber,stuScore }, null, null, null, null, ID+" asc");
查詢有條件的數據:
Cursor cursor = db.query(TABLENAME, new String[] { ID, stuName, stuNumber,stuScore }, " stuName =?",
new String[] {“zhnagsan”}, null, null, null)
這樣寫的話第四個參數就是第三個參數?的替代值。
//Returns A Cursor object, whichis positioned before the first entry
Cursorcur= mSQLiteDatabase.query(TABLENAME, new String[] { ID,stuName,stuNumber,stuScore }, stuNumber+"="+number, null, null, null, null);
也可以把第四個參數置空,直接在第三個參數完成數據的查詢條件。
兩種方法都可以。
在完成游標的生成之後。
如果這個cursor不為空,擇我們進行查詢的時候要讓游標移到第一個數據。
Cursor.moveTofirst();
因為游標默認的是指向第一行數據的上一行,如果我們不指向第一行就會報錯,越界的異常。
(二)增加
[java]
// 增加數據
public long addMethod(String str) {
/* 將新增的值放入ContentValues */
ContentValues cv = new ContentValues();
cv.put(FIELD_TEXT, str);//鍵值對
long row = db.insert(TABLE_NAME, null, cv);
Log.i(TAG, "addMethod row=" + row);
return row;
}
第一個參數是你想往哪張表中插入數據的表名。
第二個參數是不允許插入一個完全為空的一條記錄。
第二個參數是鍵值對,封裝在一個ContentValues對象中。
(三)修改
[java]
// 修改
public void modMethod(int id, String str) {
ContentValues values = new ContentValues();
values.put(FIELD_TEXT, str);
String[] whereArgs = { Integer.toString(id) };
int rowsaffected = db.update(TABLE_NAME, values, FIELD_id + " = ?",
whereArgs); www.2cto.com
Log.i(TAG, "modMethod() rowsaffected=" + rowsaffected);
}<span style="color:black;"> </span>
參數已經很清楚了。
返回的是受影響的行數,是一行還是2行。
(四)刪除
[java]
// 刪除
public void deleteMethod(int id) {
String[] whereArgs = { Integer.toString(id) };
int rowsaffected = db.delete(TABLE_NAME, FIELD_id + "=?", whereArgs);
Log.i(TAG, "deleteMethod() rowsaffected=" + rowsaffected);
}
參數已經很清楚了。
返回的是受影響的行數,是一行還是2行。
(五)關閉數據庫
[java]
//關閉數據庫
@Override
public synchronized void close() {
// TODO Auto-generated method stub
Log.i(TAG, " close() ");
db.close();
super.close();
}
作者:ta893115871
目標:學習時間日期和時鐘的設置 picker的計算機專業解釋是“選擇器”。 簡單翻譯一下: TimePicker 時間選擇器 DatePicker 日期選擇器 Analo
Qt qml listview下拉刷新和上拉分頁主要根據contentY來判斷。但要加上頂部下拉指示器、滾動條,並封裝成可簡單調用的組件,著實花了我不少精力:)先給大家展
TCP和UDP在網絡傳輸中非常重要,在Android開發中同樣重要。首先我們來看一下什麼是TCP和UDP。什麼是TCP?TCP:Transmission Control
知識點講解: Android沒有對外公開結束通話的API,如果需要結束通話,必須使用AIDL與電話管理服務進行通信,並調用服務中的API實現結束通話,方法如下: 從And