日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Android中怎么連接數(shù)據(jù)庫(kù)

這篇文章給大家介紹Android中怎么連接數(shù)據(jù)庫(kù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到富川網(wǎng)站設(shè)計(jì)與富川網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋富川地區(qū)。

問(wèn)題:用Eclipse開(kāi)發(fā)android,怎么連接到數(shù)據(jù)庫(kù),主要是連接到公司網(wǎng)站上的服務(wù)器上,從那里面的數(shù)據(jù)庫(kù)里讀數(shù)據(jù)?

Android 連接數(shù)據(jù)庫(kù)
Android采用關(guān)系型數(shù)據(jù)庫(kù)SQLite3,它是一個(gè)支持SQL輕量級(jí)的嵌入式數(shù)據(jù)庫(kù),在嵌入式操作上有很廣泛的,WM采用的也是SQLite3

關(guān)于過(guò)于、原理方面的東西在這篇文章里不會(huì)提到,但是如果你想能夠快速的學(xué)會(huì)操作SQLite3,那這就是你要找的文章!

首先,我們看一下api,所有數(shù)據(jù)庫(kù)相關(guān)的接口、類(lèi)都在.database和android.database.sqlite兩個(gè)包下,雖然只有兩個(gè)包,但是如果你英文不好或是太懶的話也要迷茫一段時(shí)間,其實(shí),我們真正用的到的沒(méi)有幾個(gè)!

1、SQLiteOpenHelper (android.database.sqlite.SQLiteOpenHelper)

這是一個(gè)抽象類(lèi),關(guān)于抽象類(lèi)我們都知道,如果要使用它,一定是繼承它!

這個(gè)類(lèi)的方法很少,有一個(gè)構(gòu)造方法

SQLiteOpenHelper(android.content.Context context, java.lang.String name,android.database.sqlite.SQLiteDatabase.CursorFactory factory, int version);

參數(shù)不做過(guò)多的解釋?zhuān)珻ursorFactory一般直接傳null就可以

public void onCreate(SQLiteDatabase db)

此方法在創(chuàng)建數(shù)據(jù)庫(kù)是被調(diào)用,所以,應(yīng)該把創(chuàng)建表的操作放到這個(gè)方法里面,一會(huì)兒在后面我們會(huì)再詳細(xì)的說(shuō)如何創(chuàng)建表

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

從方法名上我們就能知道這個(gè)方法是執(zhí)行更新的,沒(méi)錯(cuò),當(dāng)version改變是系統(tǒng)會(huì)調(diào)用這個(gè)方法,所以在這個(gè)方法里應(yīng)該執(zhí)行刪除現(xiàn)有表,然后手動(dòng)調(diào)用onCreate的操作

SQLiteDatabase getReadableDatabase()

可讀的SQLiteDatabase對(duì)象

SQLiteDatabase getWritableDatabase()

獲取可寫(xiě)的SQLiteDatabase對(duì)象

2、SQLiteDatabase(android.database.sqlite.SQLiteDatabase)

關(guān)于操作數(shù)據(jù)庫(kù)的工作(增、刪、查、改)都在這個(gè)類(lèi)里

execSQL(sql)

執(zhí)行SQL語(yǔ)句,用這個(gè)方法+SQL語(yǔ)句可以非常方便的執(zhí)行增、刪、查、改

除此之外,Android還提供了功過(guò)方法實(shí)現(xiàn)增、刪、查、改

long insert(TABLE_NAME, null, contentValues)添加記錄

int delete(TABLE_NAME, where, whereValue)刪除記錄

int update(TABLE_NAME, contentValues, where, whereValue) 更新記錄

Cursor query(TABLE_NAME, null, null, null, null, null, null) 查詢(xún)記錄

除此之外,還有很多方法,如:beginTransaction()開(kāi)始事務(wù)、endTransaction()結(jié)束事務(wù)...有興趣的可以自己看api,這里就不多贅述了

3、Cursor(android.database.Cursor)

游標(biāo)(接口),這個(gè)很熟悉了吧,Cursor里的方法非常多,常用的有:

boolean moveToPosition(position)將指針移動(dòng)到某記錄

getColumnIndex(Contacts.People.NAME)按列名獲取id

int getCount()獲取記錄總數(shù)

boolean requery()重新查詢(xún)

boolean isAfterLast()指針是否在末尾

boolean isBeforeFirst()時(shí)候是開(kāi)始位置

boolean isFirst()是否是第一條記錄

boolean isLast()是否是最后一條記錄

boolean moveToFirst()、 boolean moveToLast()、 boolean moveToNext()同moveToPosition(position)

4、SimpleCursorAdapter(android.widget.SimpleCursorAdapter)

也許你會(huì)奇怪了,之前我還說(shuō)過(guò)關(guān)于數(shù)據(jù)庫(kù)的操作都在database和database.sqlite包下,為什么把一個(gè)Adapter放到這里,如果你用過(guò)Android的SQLite3,你一定會(huì)知道

,這是因?yàn)槲覀儗?duì)數(shù)據(jù)庫(kù)的操作會(huì)經(jīng)常跟列表聯(lián)系起來(lái)

經(jīng)常有朋友會(huì)在這出錯(cuò),但其實(shí)也很簡(jiǎn)單

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this,

R.layout.list,

myCursor,

new String[] {DB.TEXT1,DB. TEXT2},

new int[]{ R.id.list1,R.id.listText2 });

my.setAdapter(adapter);

一共5個(gè)參數(shù),具體如下:

參數(shù)1:Content

參數(shù)2:布局

參數(shù)3:Cursor游標(biāo)對(duì)象

參數(shù)4:顯示的字段,傳入String[]

參數(shù)5:顯示字段使用的組件,傳入int[],該數(shù)組中是TextView組件的id

到這里,關(guān)于數(shù)據(jù)庫(kù)的操作就結(jié)束了,但是到目前為止我只做了翻譯的工作,有些同學(xué)可能還是沒(méi)有掌握,放心,下面我們一起順著正常開(kāi)發(fā)的思路理清一下頭緒!

前面的只是幫沒(méi)做過(guò)的朋友做下普及,下面才是你真正需要的!

一、寫(xiě)一個(gè)類(lèi)繼承SQLiteOpenHelpe

public class DatabaseHelper extends SQLiteOpenHelper

構(gòu)造方法:

DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

在onCreate方法里寫(xiě)建表的操作

public void onCreate(SQLiteDatabase db) {

String sql = "CREATE TABLE tb_test (_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,class_jb TEXT NOT NULL,class_ysbj TEXT NOT NULL,title TEXT NOT NULL,content_ysbj TEXT NOT NULL)";

db.execSQL(sql);//需要異常捕獲

}

在onUpgrade方法里刪除現(xiàn)有表,然后手動(dòng)調(diào)用onCtreate創(chuàng)建表

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

String sql = "drop table "+tbname;

db.execSQL(sql);

onCreate(db);

}

對(duì)表增、刪、查、改的方法,這里用的是SQLiteOpenHelper提供的方法,也可以用sql語(yǔ)句實(shí)現(xiàn),都是一樣的

關(guān)于獲取可讀/可寫(xiě)SQLiteDatabase,我不說(shuō)大家也應(yīng)該會(huì)想到,只有查找才會(huì)用到可讀的SQLiteDatabase

/**

* 添加數(shù)據(jù)

*/

public long insert(String tname, int tage, String ttel){

SQLiteDatabase db= getWritableDatabase();//獲取可寫(xiě)SQLiteDatabase對(duì)象

//ContentValues類(lèi)似map,存入的是鍵值對(duì)

ContentValues contentValues = new ContentValues();

contentValues.put("tname", tname);

contentValues.put("tage", tage);

contentValues.put("ttel", ttel);

return db.insert(tbname, null, contentValues);

}

/**

* 刪除記錄

* @param _id

*/

public void delete(String _id){

SQLiteDatabase db= getWritableDatabase();

db.delete(tbname,

"_id=?",

new String[]{_id});

}

/**

* 更新記錄的,跟插入的很像

*/

public void update(String _id,String tname, int tage, String ttel){

SQLiteDatabase db= getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("tname", tname);

contentValues.put("tage", tage);

contentValues.put("ttel", ttel);

db.update(tbname, contentValues,

"_id=?",

new String[]{_id});

}

/**

* 查詢(xún)所有數(shù)據(jù)

* @return Cursor

*/

public Cursor select(){

SQLiteDatabase db = getReadableDatabase();

return db.query(

tbname,

new String[]{"_id","tname","tage","ttel","taddr"},

null,

null, null, null, "_id desc");

}

關(guān)于db.query方法的參數(shù),有很多,為了防止大家弄亂,我簡(jiǎn)單說(shuō)一下

參數(shù)1:表名

參數(shù)2:返回?cái)?shù)據(jù)包含的列信息,String數(shù)組里放的都是列名

參數(shù)3:相當(dāng)于sql里的where,sql里where后寫(xiě)的內(nèi)容放到這就行了,例如:tage>?

參數(shù)4:如果你在參數(shù)3里寫(xiě)了?(知道我為什么寫(xiě)tage>?了吧),那個(gè)這里就是代替?的值 接上例:new String[]{"30"}

參數(shù)5:分組,不解釋了,不想分組就傳null

參數(shù)6:having,想不起來(lái)的看看SQL

參數(shù)7:orderBy排序

到這里,你已經(jīng)完成了最多的第一步!我們來(lái)看看都用到了那些類(lèi):

SQLiteOpenHelper我們繼承使用的

SQLiteDatabase增刪查改都離不開(kāi)它,即使你直接用sql語(yǔ)句,也要用到execSQL(sql)

二、這里無(wú)非是對(duì)DatabaseHelper類(lèi)定義方法的調(diào)用,沒(méi)什么可說(shuō)的,不過(guò)我還是對(duì)查詢(xún)?cè)賴(lài)Z叨幾句吧

Android查詢(xún)出來(lái)的結(jié)果一Cursor形式返回

cursor = sqLiteHelper.select();//是不是很簡(jiǎn)單?

查詢(xún)出來(lái)的cursor一般會(huì)顯示在listView中,這就要用到剛才提到的SimpleCursorAdapter

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this,

R.layout.list_row,

cursor,

new String[]{"tname","ttel"},

new int[]{R.id.TextView01,R.id.TextView02}

);

關(guān)于Android中怎么連接數(shù)據(jù)庫(kù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


文章名稱(chēng):Android中怎么連接數(shù)據(jù)庫(kù)
鏈接分享:http://www.dlmjj.cn/article/jgsocj.html