sqlitedatabase使用,手機6.0以上系統要動態註冊儲存許可權
當我們呼叫sqliteopenhelper的getreadabledatabase()或getwritabledatabase()的方法可以建立或公升級資料庫,
這兩個方法會返回乙個sqlitedatabase的物件,借助這個物件可以對資料庫進行增刪改查等操作;
sqlitedatabase db=mydatabase(自定義繼承的類).getreadabledatabase();//返回db物件
新增資料
sqlitedatabase中提供乙個insert()方法,用於新增資料,
它有三個引數:1要新增的表名,2null,3contentvaluesc的物件
//建立contentvalues物件來組裝資料
contentvalues values=new contentvalues();
values.put("bookname","天龍八部");
values.put("author","金庸");
values.put("price",44.5);
//返回long型別的值,可以在日誌中列印輸出,判斷是否新增成功
//儲存資料 返回值為插入的新資料的行號 ,如果為-1 則新增失敗
long mylong2=db.insert("mybook",null,values);
//在日誌中列印新增後返回的值
log.d("第二次新增",mylong2+"");
values.clear();
12-14 22:43:35.250 27566-27566/com.example.sqlifedatabasetest d/第一次新增: 17
12-14 22:43:35.253 27566-27566/com.example.sqlifedatabasetest d/第二次新增: 18
還有一種新增資料方法
sqlitedatabase db=mydatabase.getwritabledatabase();
string sql="insert into mybook (bookname,author,price) values('第一行**','郭林',79)";
db.execsql(sql);
修改資料
update(),用於修改資料
它有四個引數
引數1:要修改的表名
引數2:contentvalues的物件
引數3:相當於sql語句的where條件部分 //"name=?";?代表點位符
引數4:指定引數3wheret條件部分的具體內容 //既?的具體值
sqlitedatabase db2=mydatabase.getwritabledatabase();
contentvalues values2=new contentvalues();
values2.put("price",30);
//rows受影響的行數,返回0修改失敗
int rows=db2.update("mybook",values2,"author=?",new string);
//列印修改後的返回值
log.d("修改的行數",rows+"");
values2.clear();
db2.close();
12-14 22:48:19.803 2360-2360/com.example.sqlifedatabasetest d/修改的行數: 3
刪除資料
delete() 有三個引數
引數1:要刪除的表名
引數2:指定刪除條件
引數3:約束引數2的內容
sqlitedatabase db3=mydatabase.getwritabledatabase();
//value_delete返回的是受影響的行數,返回0刪除失敗
int value_delete=db3.delete("mybook","price>?",new string);
log.d("刪除後的返回值",value_delete+"");
12-14 23:14:14.289 7608-7608/com.example.sqlifedatabasetest d/刪除後的返回值: 15
查詢資料
query()可以查詢資料
它有7個引數,
引數1:查詢的表名
引數2:查詢的列名
引數3:指定where的約束條件
引數4:為wherer的點位符提供具體值
引數5:指定group by的列
引數6:對group by的結果進一步約束
引數7:指定查詢結果的排序方式
在實際操作中用不上的引數,往往指定為null;呼叫query()方法它會返回乙個游標cursor物件,
通過操作cursor,可以將資料從這個物件中取出;
cursor cursor=db.query("mytable",null,null,null,null,null,null);
關於sql的指標
c.move(int offset); //以當前位置為參考,移動到指定行
c.movetofirst(); //移動到第一行
c.movetolast(); //移動到最後一行
c.movetoposition(int position); //移動到指定行
c.movetoprevious(); //移動到前一行
c.movetonext(); //移動到下一行
c.isfirst(); //是否指向第一條
c.islast(); //是否指向最後一條
c.isbeforefirst(); //是否指向第一條之前
c.isafterlast(); //是否指向最後一條之後
c.isnull(int columnindex); //指定列是否為空(列基數為0)
c.isclosed(); //游標是否已關閉
c.getcount(); //總資料項數
c.getposition(); //返回當前游標所指向的行數
c.getcolumnindex(string columnname);//返回某列名對應的列索引值
c.getstring(int columnindex); //返回當前行指定列的值
if(cursor.movetofisrst())
};cursor.close();
從外部匯入sqliteDatabase
public class dbmanager catch malformedurlexception e catch ioexception e return in private dbmanager public static dbmanager getinstants context ctx i...
sqlitedatabase 使用心得
最近應用總是反饋database lock,或者database re open等等sqlitedatabaseexception.改來改去總是不得其所。stackflow上就那幾個方法也都試過就是不管用。後來在csdn上有一哥們的demo解決了問題。呵呵,還是國貨當自強哈。然後是注意的事項 也不複...
搭建自己的SQLiteDataBase框架(三)
標籤 空格分隔 未分類 table name developer class developer public class skill implements serializable public void setname string name public string getdesc publ...