增、刪、改、建表、修改表結構:
void execSQL(String sql)
查:
Cursor rawQuery(String sql, String[] selectionArgs)
寫個簡單的例子:
package cn.aa;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
public
class simpleSQLiteTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 簡單示意一下吧,介面神馬的都不管了
try {
// 1.建立或開啟資料庫
// 最後一個參數根據實際情況可以選擇
// SQLiteDatabase.CREATE_IF_NECESSARY、
// SQLiteDatabase.OPEN_READONLY、
// 或SQLiteDatabase.CREATE_IF_NECESSARY + SQLiteDatabase.OPEN_READONLY
// 或者,您也可以使用Mars老師教的那個方法建立
String dbName = "/data/data/cn.aa/userinfo_db";
SQLiteDatabase db = SQLiteDatabase.openDatabase(dbName, null,SQLiteDatabase.CREATE_IF_NECESSARY);
// 2.建立表
// 我要執行的在已開啟的資料庫中建立表的SQL語句是:
// create table t_userinfo(userId int primary key,name varchar(100),height double)
// execSQL方法的參數可以寫成確定的SQL語句字串,也可以用字串串連更靈活的拼出您想要的SQL語句
// 第二遍執行的時候記得把這句注釋掉。不能重複建同名表
db.execSQL("create table t_userinfo(userId int primary key,name varchar(100),height double)");
// 3.添加記錄
// 我要執行的向表t_userinfo添加記錄的SQL語句是:
// insert into t_userinfo values(1,"張三",1.85)
// 注意下面這幾句的SQL語句是我用字串串連拼出來的
// 另外注意SQL語句中的雙引號"需要寫成逸出字元\"
int userId = 1;
db.execSQL("insert into t_userinfo values(" + userId++ + ",\"張三\",1.85)");
db.execSQL("insert into t_userinfo values(" + userId++ + ",\"李四\",1.76)");
db.execSQL("insert into t_userinfo values(" + userId++ + ",\"王五\",1.82)");
// 4.修改記錄
// 我要執行的在表t_userinfo中修改記錄的SQL語句是:
// update t_userinfo set height = 1.65 where name = "張三"
String userName = "張三";
db.execSQL("update t_userinfo set height = 1.65 where name = \"" + userName + "\"");
// 5.刪除記錄
// 我要執行的在表t_userinfo中刪除記錄的SQL語句是:
// delete from t_userinfo where name = "李四"
// 這次把SQL語句寫死吧,不拼了,累……
db.execSQL("delete from t_userinfo where name = \"李四\"");
// 6.查詢
// 我要執行的在表t_userinfo中查詢的SQL語句是:
// select * from t_userinfo
// 這個要使用rawQuery方法,它的傳回值是一個Cursor
// 您可以選擇自己拼接您的SQL語句,或者使用萬用字元?配合第二個參數selectionArgs來獲得靈活性,效果一樣
Cursor rows = db.rawQuery("select * from t_userinfo", null);
while (rows.moveToNext()) {
int id = rows.getInt(rows.getColumnIndex("userId"));
String name = rows.getString(rows.getColumnIndex("name"));
double height = rows.getDouble(rows.getColumnIndex("height"));
System.out.println(id + "\t" + name + "\t" + height);
}
//最後不要忘了關閉資料庫
db.close();
} catch (SQLiteException e) {
e.printStackTrace();
}
}
}
呵呵,那得看您要不要掌握SQL了。
我評價SQL就是獨孤九劍,劍招極少(總共就creat、alter、insert、update、delete、select六個語句,比獨孤九劍還少三招,而且其中變化繁雜的就select一招),威力極大(能夠應付資料庫的所有操作),變化極繁(主要是select,那叫一個千變萬化)
要是您以後都用不到SQL,那琢磨琢磨SQLiteDatabase類裡面的函數,搞清楚各個參數的意義,用起來也一樣的。
但是我想您既然用到sqlite了,以後保不齊會用別的資料庫。那就還不如把SQL學好(現在資料庫不支援SQL是不可想象的)。那樣的話我這個方法的優勢就很明顯了。只要您能寫出SQL語句,這兩個函數就夠了。
只需要知道3點:
1.SQL語句寫成字串形式作為函數的參數
2.可以拼接SQL語句獲得靈活性
3.注意把SQL語句中的引號寫成逸出字元
****************************************************************************
1. //取得數據庫及所在位置。注意,此處用的StringBuilder,是為了節約記憶體,減少String操作時產生記憶體消耗(String操作時,將發生記憶體的申請與釋放,比較耗記憶體)。
2. StringBuilder ji串連文本_S = new StringBuilder(60);
3. ji串連文本_S.append(this.getClass().getPackage().getName());
4. ji串連文本_S.insert(0, "/data/data/");
5. ji串連文本_S.append("/database/userinfo_db");