當前位置:首頁 » 安卓系統 » androidsqlite顯示

androidsqlite顯示

發布時間: 2022-08-18 11:18:10

㈠ android sqlite數據怎麼顯示到UI界面中

1 sqlite增刪改的例子圖片

2 上面使用的例子來自android學習手冊,例子、源碼、文檔全部搞定,採用androidstudo的目錄結構,360手機助手中下載。。

3 使用SQLite。

現在的主流移動設備像Android、iPhone等都使用SQLite作為復雜數據的存儲引擎,在我們為移動設備開發應用程序時,也許就要使用到SQLite來存儲我們大量的數據,所以我們就需要掌握移動設備上的SQLite開發技巧。對於Android平台來說,系統內置了豐富的API來供開發人員操作SQLite,我們可以輕松的完成對數據的存取。

下面就向大家介紹一下SQLite常用的操作方法,為了方便,我將代碼寫在了Activity的onCreate中:


[java] view plain print?

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

//打開或創建test.db資料庫

SQLiteDatabasedb=openOrCreateDatabase("test.db",Context.MODE_PRIVATE,null);

db.execSQL("DROPTABLEIFEXISTSperson");

//創建person表

db.execSQL("CREATETABLEperson(_,nameVARCHAR,ageSMALLINT)");

Personperson=newPerson();

person.name="john";

person.age=30;

//插入數據

db.execSQL("INSERTINTOpersonVALUES(NULL,?,?)",newObject[]{person.name,person.age});

person.name="david";

person.age=33;

//ContentValues以鍵值對的形式存放數據

ContentValuescv=newContentValues();

cv.put("name",person.name);

cv.put("age",person.age);

//插入ContentValues中的數據

db.insert("person",null,cv);

cv=newContentValues();

cv.put("age",35);

//更新數據

db.update("person",cv,"name=?",newString[]{"john"});

Cursorc=db.rawQuery("SELECT*FROMpersonWHEREage>=?",newString[]{"33"});

while(c.moveToNext()){

int_id=c.getInt(c.getColumnIndex("_id"));

Stringname=c.getString(c.getColumnIndex("name"));

intage=c.getInt(c.getColumnIndex("age"));

Log.i("db","_id=>"+_id+",name=>"+name+",age=>"+age);

}

c.close();

//刪除數據

db.delete("person","age<?",newString[]{"35"});

//關閉當前資料庫

db.close();

//刪除test.db資料庫

//deleteDatabase("test.db");

}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//打開或創建test.db資料庫
SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);
db.execSQL("DROP TABLE IF EXISTS person");
//創建person表
db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");
Person person = new Person();
person.name = "john";
person.age = 30;
//插入數據
db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{person.name, person.age});

person.name = "david";
person.age = 33;
//ContentValues以鍵值對的形式存放數據
ContentValues cv = new ContentValues();
cv.put("name", person.name);
cv.put("age", person.age);
//插入ContentValues中的數據
db.insert("person", null, cv);

cv = new ContentValues();
cv.put("age", 35);
//更新數據
db.update("person", cv, "name = ?", new String[]{"john"});

Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"33"});
while (c.moveToNext()) {
int _id = c.getInt(c.getColumnIndex("_id"));
String name = c.getString(c.getColumnIndex("name"));
int age = c.getInt(c.getColumnIndex("age"));
Log.i("db", "_id=>" + _id + ", name=>" + name + ", age=>" + age);
}
c.close();

//刪除數據
db.delete("person", "age < ?", new String[]{"35"});

//關閉當前資料庫
db.close();

//刪除test.db資料庫
// deleteDatabase("test.db");
}
在執行完上面的代碼後,系統就會在/data/data/[PACKAGE_NAME]/databases目錄下生成一個「test.db」的資料庫文件,如圖:



上面的代碼中基本上囊括了大部分的資料庫操作;對於添加、更新和刪除來說,我們都可以使用


[java] view plain print?

db.executeSQL(Stringsql);

db.executeSQL(Stringsql,Object[]bindArgs);//sql語句中使用佔位符,然後第二個參數是實際的參數集

db.executeSQL(String sql);
db.executeSQL(String sql, Object[] bindArgs);//sql語句中使用佔位符,然後第二個參數是實際的參數集
除了統一的形式之外,他們還有各自的操作方法:



[java] view plain print?

db.insert(Stringtable,StringnullColumnHack,ContentValuesvalues);

db.update(Stringtable,Contentvaluesvalues,StringwhereClause,StringwhereArgs);

db.delete(Stringtable,StringwhereClause,StringwhereArgs);

db.insert(String table, String nullColumnHack, ContentValues values);
db.update(String table, Contentvalues values, String whereClause, String whereArgs);
db.delete(String table, String whereClause, String whereArgs);
以上三個方法的第一個參數都是表示要操作的表名;insert中的第二個參數表示如果插入的數據每一列都為空的話,需要指定此行中某一列的名稱,系統將此列設置為NULL,不至於出現錯誤;insert中的第三個參數是ContentValues類型的變數,是鍵值對組成的Map,key代表列名,value代表該列要插入的值;update的第二個參數也很類似,只不過它是更新該欄位key為最新的value值,第三個參數whereClause表示WHERE表達式,比如「age > ? and age < ?」等,最後的whereArgs參數是佔位符的實際參數值;delete方法的參數也是一樣。


下面來說說查詢操作。查詢操作相對於上面的幾種操作要復雜些,因為我們經常要面對著各種各樣的查詢條件,所以系統也考慮到這種復雜性,為我們提供了較為豐富的查詢形式:


[java] view plain print?

db.rawQuery(Stringsql,String[]selectionArgs);

db.query(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy);

db.query(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit);

db.query(Stringdistinct,Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit);

db.rawQuery(String sql, String[] selectionArgs);
db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);
db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);
db.query(String distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);
上面幾種都是常用的查詢方法,第一種最為簡單,將所有的SQL語句都組織到一個字元串中,使用佔位符代替實際參數,selectionArgs就是佔位符實際參數集;下面的幾種參數都很類似,columns表示要查詢的列所有名稱集,selection表示WHERE之後的條件語句,可以使用佔位符,groupBy指定分組的列名,having指定分組條件,配合groupBy使用,orderBy指定排序的列名,limit指定分頁參數,distinct可以指定「true」或「false」表示要不要過濾重復值。需要注意的是,selection、groupBy、having、orderBy、limit這幾個參數中不包括「WHERE」、「GROUP BY」、「HAVING」、「ORDER BY」、「LIMIT」等SQL關鍵字。
最後,他們同時返回一個Cursor對象,代表數據集的游標,有點類似於JavaSE中的ResultSet。


下面是Cursor對象的常用方法:


[java] view plain print?

c.move(intoffset);//以當前位置為參考,移動到指定行

c.moveToFirst();//移動到第一行

c.moveToLast();//移動到最後一行

c.moveToPosition(intposition);//移動到指定行

c.moveToPrevious();//移動到前一行

c.moveToNext();//移動到下一行

c.isFirst();//是否指向第一條

c.isLast();//是否指向最後一條

c.isBeforeFirst();//是否指向第一條之前

c.isAfterLast();//是否指向最後一條之後

c.isNull(intcolumnIndex);//指定列是否為空(列基數為0)

c.isClosed();//游標是否已關閉

c.getCount();//總數據項數

c.getPosition();//返回當前游標所指向的行數

c.getColumnIndex(StringcolumnName);//返回某列名對應的列索引值

c.getString(intcolumnIndex);//返回當前行指定列的值

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); //返回當前行指定列的值

在上面的代碼示例中,已經用到了這幾個常用方法中的一些,關於更多的信息,大家可以參考官方文檔中的說明。

最後當我們完成了對資料庫的操作後,記得調用SQLiteDatabase的close()方法釋放資料庫連接,否則容易出現SQLiteException。

上面就是SQLite的基本應用,但在實際開發中,為了能夠更好的管理和維護資料庫,我們會封裝一個繼承自SQLiteOpenHelper類的資料庫操作類,然後以這個類為基礎,再封裝我們的業務邏輯方法。

下面,我們就以一個實例來講解具體的用法,我們新建一個名為db的項目,結構如下:


其中DBHelper繼承了SQLiteOpenHelper,作為維護和管理資料庫的基類,DBManager是建立在DBHelper之上,封裝了常用的業務方法,Person是我們的person表對應的JavaBean,MainActivity就是我們顯示的界面。

下面我們先來看一下DBHelper:


[java] view plain print?

packagecom.scott.db;

importandroid.content.Context;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteOpenHelper;

{

_NAME="test.db";

privatestaticfinalintDATABASE_VERSION=1;

publicDBHelper(Contextcontext){

//CursorFactory設置為null,使用默認值

super(context,DATABASE_NAME,null,DATABASE_VERSION);

}

//資料庫第一次被創建時onCreate會被調用

@Override

publicvoidonCreate(SQLiteDatabasedb){

db.execSQL("CREATETABLEIFNOTEXISTSperson"+

"(_,nameVARCHAR,ageINTEGER,infoTEXT)");

}

//如果DATABASE_VERSION值被改為2,系統發現現有資料庫版本不同,即會調用onUpgrade

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

db.execSQL("");

}

}

package com.scott.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "test.db";
private static final int DATABASE_VERSION = 1;

public DBHelper(Context context) {
//CursorFactory設置為null,使用默認值
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

//資料庫第一次被創建時onCreate會被調用
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS person" +
"(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age INTEGER, info TEXT)");
}

//如果DATABASE_VERSION值被改為2,系統發現現有資料庫版本不同,即會調用onUpgrade
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("ALTER TABLE person ADD COLUMN other STRING");
}
}

正如上面所述,資料庫第一次創建時onCreate方法會被調用,我們可以執行創建表的語句,當系統發現版本變化之後,會調用onUpgrade方法,我們可以執行修改表結構等語句。


為了方便我們面向對象的使用數據,我們建一個Person類,對應person表中的欄位,如下:

㈡ android怎麼把sqlite里的數據用TextView顯示

TextView只是負責顯示數據,跟取數據沒關系。從資料庫查詢數據要自己實現,一般用SqliteDatabase類來打開資料庫並查詢,返回一個Cursor對象,再用Cursor對象去獲取你要查詢的值。

㈢ Android sqlite資料庫輸出顯示問題

安卓對SQLite表中的主鍵欄位要求比較苛刻,必須使用 _id 算是比較霸道吧。不過我們也沒辦法。。呵呵 你改改試一試, 我上次也是遇到這樣的問題,調了半天都沒解決。查API才發現的。希望能幫到你

㈣ 怎麼查看安卓sqlite資料庫

打開android項目的調試模式,然後找到顯示DDMS 選擇DDMS 切換到DDMS,顯示File Explorer窗口,找到/data/data/ 啰嗦一句,你可能在你自己的eclipse沒找到,File Explorer ,如果找不到的話,就去網上下載,"easyExplorer",放在eclipse的plugins目錄下:就OK了,重啟一下。 然後找到自己用的程序包的文件夾,打開databases,就看到sqlite資料庫文件了,然後到處就可以了。步驟上面標注好了,1,2,3。這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager等打開就可以了。 說一下另外一種方法,運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:(必須要用root許可權,如果不是root許可權,去查詢別的資料,一般都是root許可權。OK了) 上面的不走還算詳細吧,大家應該了解了吧,我也是菜鳥,被逼著走過來的,加油。YES,我也可以的。 Android開發怎麼查看和管理sqlite資料庫

㈤ android怎麼查看sqlite

安裝SQLite Expert Professional 可以在網上下載,我下載的是試用版,沒有找注冊碼,但是試用不影響使用,反正用幾次查看到資料庫操作沒有錯誤就不用這個工具了。當然也可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android項目中的sqlite資料庫位於/data/data/項目包/databases中。先介紹使用DDMS導出sqlite資料庫的操作和使用adb工具訪問sqlite資料庫。
首先打開android項目的調試模式,然後找到顯示DDMS

切換到DDMS,顯示File Explorer窗口,找到/data/data/ 如下圖1 ,
然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。如下圖2.
這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如SQLite Expert Professional可以打開該資料庫了。其他 sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager也可以打開該資料庫。

使用adb工具訪問sqlite資料庫
Android Debug Bridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,可以管理預定埠,可以在設備上運行shell命令,我們 知道android是基於linux內核,它的內部文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用 shell來訪問android應用中的sqlite資料庫文件。
1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:如下圖

進入資料庫所在目錄:
shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下文件列表和進入到指定目錄。了解這兩個命令之後,就可以找到data/data/項目包名/databases 如下圖1, 找到資料庫文件如下圖2。

使用sqlite管理工具來進行資料庫操作
鍵入sqlite3 資料庫名就進入了sqlite管理模式了。
如下圖

設置sqlite環境變數:
在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是一個命令行工具。為了使用方便,將其路徑注冊到系 統環境變數path中,即將;%Android_Home%加在Path中,這樣只樣運行sqlite3,就能直接打開sqlite管理工具了。
如下圖:

使用sqlite管理資料庫:
sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。
sqlite常用命令:
.tables--查看資料庫的表列表
.exit--退出sqlite命令行
其他命令可隨時.help查看幫助。sql命令可直接在此命令行上執行即可:

㈥ android 怎麼查看sqlite資料庫

在Android中查看和管理sqlite資料庫

在Android中可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android
項目中的sqlite資料庫位於/data/data/項目包/databases中。
使用DDMS導出sqlite資料庫。

1、首先打開android項目的調試模式,然後找到顯示DDMS:

選擇DDMS

2、切換到DDMS,顯示File Explorer窗口,找到/data/data/

然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。

這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如
sqlite administrator、sqlite man或者firefox插件sqlite manager等打開就可以了。

使用adb工具訪問sqlite資料庫

Android Debug Bridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,
可以管理預定埠,可以在設備上運行shell命令,我們知道android是基於Linux內核,它的內部
文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用shell
來訪問android應用中的sqlite資料庫文件。

1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell
命令模式,注意adb要在Android模擬器運行時才能進入shell:

2、shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下
文件列表和進入到指定目錄。了解這兩個命令之後,就可以找到data/data/項目包名/databases:

找到資料庫文件:

接下來就是使用sqlite管理工具來進行操作了。鍵入sqlite3 資料庫名就進入了sqlite管理模式了。

在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是一個命令行工具。為了使用
方便,將其路徑注冊到系統環境變數path中,即將;%Android_Home%加在Path中,這樣只樣運行sqlite3
,就能直接打開sqlite管理工具了。

sqlite管理資料庫篇

sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入
;,這樣sqlite命令才會被執行。

sqlite常用命令:

.tables--查看資料庫的表列表

.exit--退出sqlite命令行

其他命令可隨時.help查看幫助。sql命令可直接在此命令行上執行即可

㈦ android中怎麼將SQLite中的數據顯示在TextView中,不是用ListView !!!

public List<String> findAllDate()(){//我的一個方法
List<String> list = new ArrayList<String>();
SQLiteDatabase database = dbopenhelper.getWritableDatabase();
Cursor cursor = database.rawQuery("select date from health", new String[]{});//這邊寫上你的查詢語句
while(cursor.moveToNext()){
list.add(cursor.getString(0));
}
cursor.close();
database.close();
return list;
}
之後就是把這個LIST顯示在Listview中;
如:SimpleAdapter adapter=new SimpleAdapter(Listview.this,list
,R.layout.viewdate,new String[]{"date"},
new int[]{R.id.tdate});
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { //事件
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
....
}

});
希望對你有用

㈧ 安卓開發sqlite資料庫在列表中顯示的問題

db.close();
cursor.close();
這兩個去掉
試下
理由是:查詢時不要去關閉連接,否則緩存中的數據無法獲取
希望有作用!

㈨ android中怎麼將SQLite中的數據顯示在Listview中(用Cursor)

public List<String> findAllDate(){//我的一個方法
List<String> list = new ArrayList<String>();
SQLiteDatabase database = dbopenhelper.getWritableDatabase();
Cursor cursor = database.rawQuery("select date from health", new String[]{});//這邊寫上你的查詢語句
while(cursor.moveToNext()){
list.add(cursor.getString(0));
}
cursor.close();
database.close();
return list;
}
之後就是把這個LIST顯示在Listview中;
如:SimpleAdapter adapter=new SimpleAdapter(Listview.this,list
,R.layout.viewdate,new String[]{"date"},
new int[]{R.id.tdate});
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { //事件
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
....
}

});
希望對你有用

熱點內容
電腦主機伺服器多少錢 發布:2025-01-16 13:00:28 瀏覽:663
linuxoracle操作 發布:2025-01-16 12:40:50 瀏覽:45
河北存儲服務價格 發布:2025-01-16 12:39:21 瀏覽:343
掛機伺服器的搭建 發布:2025-01-16 12:34:07 瀏覽:415
安卓怎麼刪除信任憑證 發布:2025-01-16 12:22:06 瀏覽:336
代理編譯 發布:2025-01-16 12:07:59 瀏覽:794
伺服器為什麼老是無響應 發布:2025-01-16 12:07:59 瀏覽:892
安卓怎麼傳軟體到蘋果 發布:2025-01-16 12:01:28 瀏覽:953
pythonforzip 發布:2025-01-16 11:59:46 瀏覽:910
磁感密碼鎖有多少鑰匙 發布:2025-01-16 11:41:12 瀏覽:118