Javaweb實現增刪改查的步驟,1.加載jdbc的驅動,2.連接到數據庫 3.准備sql語句,
Android中加載驅動已經完成了,拿到數據庫的引用就是鏈接數據庫了。
獲取SQLitedatabase 對象,調用上一節中helper對象的getWritableDatabase()方法
調用SQLitedatabase 對象的execSQL()方法,執行sql語句
例如:insert into person (name) values(”taoshihan”)
Select * from person
Update person set name=”tsh” where id=1
Delete from person where id=1
一般情況下,給數據訪問層建個包叫dao,建個class叫PersonDao,創建構造方法,在里面初始化helper,參數是Context上下文,獲取到SQLiteDatabase對象后記得要調用close()方法
Android中為了防止特殊字符,db對象提供了個帶有占位符的方法execSQL(sql,Object[]),sql語句參數部分用?代替,object[] 數組里面放參數變量。
查詢部分,調用db對象的rawQuery(sql,selectArgs),參數:sql語句和String[] 數組,返回Cursor對象結果集,調用Cursor對象的moveToNext()判斷是否能移動到下一條,返回bool,結果集也要close()
查詢全部,返回一個List集合,list里面是每一個條目,包裝一個Person對象放進去,新建一個domain包,里面定義屬性和set get方法,同樣是調用db對象的rawQuery方法,得到Cursor游標對象,while(cursor.moveToNext()){}循環一下,往下移動一條,如果到最后一條會false。循環里面調用Cursor對象的getInt(columnIndex)參數是字段索引,索引可以通過getColumnIndex(columnName),參數是字段名得到。Person業務對象加個toString()方法,方便 打印使用。
dao代碼:
package com.tsh.database.dao; import java.util.ArrayList; import java.util.List; import com.tsh.database.PersonSQLiteOpenHelper; import com.tsh.database.domain.Person; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class PersonDao { private PersonSQLiteOpenHelper helper; public PersonDao(Context context){ helper=new PersonSQLiteOpenHelper(context); } /** * 增加一條 * @param name */ public void add(String name){ SQLiteDatabase db=helper.getWritableDatabase(); db.execSQL("insert into person (name) values(?)",new Object[]{name}); db.close(); } /** * 查詢全部 * @return */ public List<Person> select(){ List<Person> persons=new ArrayList<Person>(); SQLiteDatabase db=helper.getReadableDatabase(); Cursor cursor=db.rawQuery("select * from person", null); while(cursor.moveToNext()){ int id=cursor.getInt(cursor.getColumnIndex("id")); String name=cursor.getString(cursor.getColumnIndex("name")); Person person=new Person(id,name); persons.add(person); } cursor.close(); db.close(); return persons; } }
測試用例:
package com.tsh.database.test; import java.util.List; import com.tsh.database.PersonSQLiteOpenHelper; import com.tsh.database.dao.PersonDao; import com.tsh.database.domain.Person; import android.test.AndroidTestCase; public class TestPersonDb extends AndroidTestCase { public void testPerson() throws Exception{ PersonSQLiteOpenHelper helper =new PersonSQLiteOpenHelper(getContext()); helper.getWritableDatabase(); } /** * 測試添加 * @throws Exception */ public void testAdd() throws Exception{ PersonDao dao=new PersonDao(getContext()); dao.add("taoshihan"); } /** * 測試查詢 * @throws Exception */ public void testSelect() throws Exception{ PersonDao dao=new PersonDao(getContext()); List<Person> persons=dao.select(); for(Person p:persons){ System.out.println(p.toString()); } } }