執行SQL語句來操作數據庫

 執行SQL語句來操作數據庫有兩種方式,拼串和使用佔位符”?。使用佔位符”?”來執行SQL語句能夠防止SQL注入攻擊。
 拼串方式使用的方法:execSQL(String sql):增、刪、改。

Cursor rawQuery(String sql, String[] selectionArgs): 查詢(拼串方式,第二個參數傳null即可)。
佔位符”?”使用的方法:void execSQL(String sql, Object[] bindArgs)。Cursor rawQuery(String sql, String[] selectionArgs)。
第二個參數對應的是第一個參數中佔位符”?”對應的數據數組
下面通過一個案例來演示通過執行SQL實現對數據的增刪改查操作。

//插入一條數據
public void insert(){
//獲取數據庫對象
SQLiteDatabase dataBase = getDataBase();
String sql = “insert into person(name,age,phone) values(?,?,?)”;
//執行sql語句
dataBase.execSQL(sql,new Object[]{“lisi”,”21”,”15735927399”});
//關閉數據庫
dataBase.close();
}
//查詢單個數據
public void query(){
SQLiteDatabase dataBase = getDataBase();
String sql = “select name,age,phone from person where name=?”;
//執行rawQuery查詢,返回Cursor對象
Cursor cursor = dataBase.rawQuery(sql , new String[]{“zhangsan”});
Person person = new Person();
//如果遊標還有下一個元素,跟我們集合中Iterator中hasNext()方法類似
while(cursor.moveToNext()){
//獲取當前遊標的第0個元素,元素是從0開始的,而不是1
String name = cursor.getString(0);
//也可以通過列名來查詢該字段在遊標中的位置
int age = cursor.getInt(cursor.getColumnIndex(“age”));
String phone = cursor.getString(2);
person.setName(name);
person.setAge(age);
person.setPhone(phone);
}
//關閉遊標
cursor.close();
System.out.println(person);
}
//更新數據
public void update(){
SQLiteDatabase dataBase = getDataBase();
String sql = “update person set age=? where name=?”;
//將zhangsan的年齡修改爲18
dataBase.execSQL(sql,new String[]{“18”,”zhangsan”});
dataBase.close();
}
//查詢所有數據
public void queryAll(){
SQLiteDatabase dataBase = getDataBase();
List persons = new ArrayList();
String sql = “select name,age,phone from person”;
Cursor cursor = dataBase.rawQuery(sql , null);
while(cursor.moveToNext()){
String name = cursor.getString(0);
int age = cursor.getInt(1);
String phone = cursor.getString(2);
Person p = new Person();
p.setAge(age);
p.setName(name);
p.setPhone(phone);
persons.add(p);
}
//關閉遊標
cursor.close();
//輸出集合中的數據
for(Person p : persons){
System.out.println(p);
}
}

發佈了33 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章