SQLiteDatabase 基本使用

2021-08-13 14:31:04 字數 3233 閱讀 9726

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...