新聞中心
Android 數(shù)據(jù)庫(kù)操作:實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與讀取

成都創(chuàng)新互聯(lián)是一家專業(yè)從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,成都創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開(kāi)發(fā)服務(wù)!
在開(kāi)發(fā) Android 應(yīng)用程序時(shí),常常需要使用數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的存儲(chǔ)與讀取。Android 支持多種數(shù)據(jù)庫(kù),包括 SQLite、Realm 等。本文將以 SQLite 數(shù)據(jù)庫(kù)為例,介紹 Android 數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)方法,包括建表、增刪改查等操作。
一、SQLite 數(shù)據(jù)庫(kù)的創(chuàng)建與打開(kāi)
在 Android 應(yīng)用程序中創(chuàng)建 SQLite 數(shù)據(jù)庫(kù),可以通過(guò)使用 SQLiteOpenHelper 類。該類提供了創(chuàng)建、打開(kāi)、更新數(shù)據(jù)庫(kù)的方法。
在使用 SQLiteOpenHelper 類創(chuàng)建數(shù)據(jù)庫(kù)時(shí),需要重寫(xiě)該類的 onCreate() 方法和 onUpgrade() 方法。onCreate() 方法在數(shù)據(jù)庫(kù)被創(chuàng)建時(shí)調(diào)用,通常用于創(chuàng)建數(shù)據(jù)庫(kù)表、初始化數(shù)據(jù)等操作。onUpgrade() 方法在數(shù)據(jù)庫(kù)版本升級(jí)時(shí)調(diào)用,可以用于更新表結(jié)構(gòu)、修改數(shù)據(jù)等操作。
以下是一個(gè)創(chuàng)建數(shù)據(jù)庫(kù)的例子:
“`java
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = “create table Book (“
+ “id integer primary key autoincrement, “
+ “author text, “
+ “price real, “
+ “pages integer, “
+ “name text)”;
public MyDatabaseHelper(Context context, String name,
SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// do something when upgrading
}
}
“`
在上面的例子中,我們創(chuàng)建了一個(gè)名為 Book 的表,該表包含四個(gè)字段:id(主鍵)、author(作者)、price(價(jià)格)、pages(頁(yè)數(shù))和 name(書(shū)名)。
二、數(shù)據(jù)庫(kù)表的增刪改查操作
在實(shí)現(xiàn) Android 數(shù)據(jù)庫(kù)操作中,增刪改查是最基本的操作。下面我們將詳細(xì)介紹如何進(jìn)行這些操作。
1. 插入數(shù)據(jù)
向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù),可以使用 SQLiteDatabase 中的 insert() 方法。該方法需要傳遞三個(gè)參數(shù):表名、空列的默認(rèn)值和要插入的數(shù)據(jù)。以下是一個(gè)插入數(shù)據(jù)的例子:
“`java
ContentValues values = new ContentValues();
values.put(“author”, “Tom”);
values.put(“price”, 20.3);
values.put(“pages”, 300);
values.put(“name”, “Android Development”);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.insert(“Book”, null, values);
“`
在上面的例子中,我們首先創(chuàng)建了一個(gè) ContentValues 對(duì)象,用于存儲(chǔ)要插入的數(shù)據(jù)。然后通過(guò) getWritableDatabase() 方法獲取 SQLiteDatabase 對(duì)象,調(diào)用 insert() 方法向 Book 表中插入數(shù)據(jù)。
2. 更新數(shù)據(jù)
更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù),可以使用 SQLiteDatabase 中的 update() 方法。該方法需要傳遞四個(gè)參數(shù):表名、更新的數(shù)據(jù)、更新的條件和更新的條件參數(shù)。以下是一個(gè)更新數(shù)據(jù)的例子:
“`java
ContentValues values = new ContentValues();
values.put(“price”, 30.5);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.update(“Book”, values, “name = ?”, new String[] { “Android Development” });
“`
在上面的例子中,我們首先創(chuàng)建了一個(gè) ContentValues 對(duì)象,用于存儲(chǔ)要更新的數(shù)據(jù)。然后通過(guò) getWritableDatabase() 方法獲取 SQLiteDatabase 對(duì)象,調(diào)用 update() 方法更新 Book 表中名為 Android Development 的書(shū)的價(jià)格。
3. 刪除數(shù)據(jù)
從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù),可以使用 SQLiteDatabase 中的 delete() 方法。該方法需要傳遞三個(gè)參數(shù):表名、刪除條件和刪除條件參數(shù)。以下是一個(gè)刪除數(shù)據(jù)的例子:
“`java
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete(“Book”, “pages > ?”, new String[] { “500” });
“`
在上面的例子中,我們通過(guò) getWritableDatabase() 方法獲取 SQLiteDatabase 對(duì)象,調(diào)用 delete() 方法刪除 Book 表中頁(yè)數(shù)大于 500 的書(shū)。
4. 查詢數(shù)據(jù)
從數(shù)據(jù)庫(kù)表中查詢數(shù)據(jù),可以使用 SQLiteDatabase 中的 query() 方法。該方法需要傳遞七個(gè)參數(shù):表名、返回的字段、查詢條件、查詢條件參數(shù)、分組條件、having 條件和排序條件。
以下是一個(gè)查詢數(shù)據(jù)的例子:
“`java
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.query(“Book”, null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
String author = cursor.getString(cursor.getColumnIndex(“author”));
String name = cursor.getString(cursor.getColumnIndex(“name”));
double price = cursor.getDouble(cursor.getColumnIndex(“price”));
int pages = cursor.getInt(cursor.getColumnIndex(“pages”));
} while (cursor.moveToNext());
}
cursor.close();
“`
在上面的例子中,我們通過(guò) getWritableDatabase() 方法獲取 SQLiteDatabase 對(duì)象,調(diào)用 query() 方法查詢 Book 表中的所有數(shù)據(jù)。然后通過(guò) moveToFirst() 和 moveToNext() 方法遍歷查詢結(jié)果,獲取想要的數(shù)據(jù)。
三、
通過(guò)本文,我們了解了 Android 數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)方法,包括 SQLite 數(shù)據(jù)庫(kù)的創(chuàng)建與打開(kāi)、數(shù)據(jù)庫(kù)表的增刪改查等操作。在實(shí)際開(kāi)發(fā)中,我們可以根據(jù)實(shí)際需要,靈活運(yùn)用這些操作,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)與讀取。
相關(guān)問(wèn)題拓展閱讀:
- android 怎么往數(shù)據(jù)庫(kù)里面添加數(shù)據(jù)
- android訪問(wèn)數(shù)據(jù)庫(kù)怎么實(shí)現(xiàn)
- android 怎么調(diào)用數(shù)據(jù)庫(kù)方法
android 怎么往數(shù)據(jù)庫(kù)里面添加數(shù)據(jù)
參考如下內(nèi)容:
你通過(guò)getText()方法侍兄盯首先得到輸入的值,然后調(diào)用數(shù)據(jù)庫(kù)的插入方法 db.insert();插入到數(shù)塵判據(jù)庫(kù)中就行 就想這樣
EditText et ;
String num = et.getText().toString();
public void addData(String num) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(“num”, num);
db.insert(“表名”, null, values);
}
當(dāng)你調(diào)用這個(gè) addData()方法時(shí)就會(huì)向老和數(shù)據(jù)庫(kù)中插入數(shù)據(jù)了
一、引入
數(shù)據(jù)庫(kù)創(chuàng)建的問(wèn)題解決了,接下來(lái)就該使用數(shù)據(jù)庫(kù)實(shí)現(xiàn)應(yīng)用程序功能的時(shí)候了?;?/p>
本的操作包括創(chuàng)建、讀取、更新、刪除,即我們通常說(shuō)的 CRUD(Create, Read, Update, Delete)。
在實(shí)現(xiàn)這些操作的時(shí)候,我們會(huì)使用到兩個(gè)比較重要的類 SQLiteDatabase 類和 Cursor 類蔽吵叢。
二、創(chuàng)建表
1,execSQL(String sql):執(zhí)行一條 sql 語(yǔ)句,且執(zhí)行操作不能為 SELECT
因?yàn)樗姆祷刂禐?void,所以推薦使用 insert、update 方法等
2.,execSQL (String sql,Object bindArgs)
sql:執(zhí)行一條 sql 語(yǔ)句
bindArgs:為 sql 語(yǔ)句中的?賦值
三、添加數(shù)據(jù)
1、execSQL(String sql)
2、使用對(duì)象的 insert 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
db.insert(TABLE_NAME, null, values);
參數(shù):
table:數(shù)據(jù)庫(kù)中的表名
nullColumnHack:指定默認(rèn)插入字段,為 null 時(shí)能插入數(shù)據(jù)
values:表示插入字段所對(duì)應(yīng)的值,使用 put 方法。
四、刪除數(shù)據(jù)
1、execSQL(String sql)
2、使用對(duì)象的 delete 方法
String whereClaues=”_id=?”;
String whereArgs={String.valueOf(id)};
//db.delete(TABLE_NAME, “_id=”+id, null);
db.delete(TABLE_NAME, whereClaues, whereArgs);
參數(shù)
table:數(shù)據(jù)庫(kù)的表名
whereClause:where 子句,比如:_id=?
whereArgs:where 子句中?的值
五、修改數(shù)據(jù)
1、execSQL(String sql)
2、使用對(duì)象的 delete 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
String whereClaues=”_id=?”;
String whereArgs={String.valueOf(user.getId())};
db.update(TABLE_NAME, values, whereClaues, whereArgs);
參數(shù)
table:數(shù)據(jù)庫(kù)的表名
values:代表要修改的值,修改方法還是宏櫻 put(key,values)
whereClause:條件子句,比如 id=?,name=?
whereArgs:為 whereClause 中的?賦值,比如:new String{“1″,”張三”}
圖:
參考代碼:
程序內(nèi)使用SQLite數(shù)據(jù)庫(kù)是通過(guò)SQLiteOpenHelper進(jìn)行操作
1.自己寫(xiě)個(gè)類繼承SQLiteOpenHelper,重寫(xiě)以下3個(gè)方法
public void onCreate(SQLiteDatabase db) 碰肆
{//創(chuàng)建數(shù)據(jù)庫(kù)時(shí)的操作,如建表}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
//版本更新的操作
}
2. 通過(guò)SQLiteOpenHelper的getWritableDatabase()獲得一個(gè)SQLiteDatabase數(shù)據(jù)庫(kù),以后的操作都是對(duì)SQLiteDatabase進(jìn)行操作。
3.對(duì)得到的SQLiteDatabase對(duì)象進(jìn)行增,改,刪,查等操作。
代碼
package cx.myNote;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
//DBOptions for login
public class DBOptions {
private static final String DB_NAME = “notes.db”;
private static final String DB_CREATE=”create table logininf(name text,pwd text)”;
public class DBHelper extends SQLiteOpenHelper
{
public DBHelper(Context context) {
super(context,DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//建表
db.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL(“drop table if exists logininf”);
onCreate(db);
}
}
private Context context;
private SQLiteDatabase db;
private DBHelper dbHelper;
public DBOptions(Context context)
{
this.context = context;
dbHelper = new DBHelper(context);
db=dbHelper.getReadableDatabase();
}
//自己寫(xiě)的方法,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作
public String getName()
{
Cursor cursor = db.rawQuery(“select name from logininf”, null);
cursor.moveToFirst();
return cursor.getString(0);
}
public int changePWD(String oldP,String pwd)
{
ContentValues values = new ContentValues();
values.put(“pwd”, pwd);
return db.update(“l(fā)ogininf”, values,”pwd=”+oldP, null);
}
}
insert方法插入的一行記錄使用ContentValus存放,ContentValues類似于Map,它提供了put(String key, Xxx value)(其中key為數(shù)據(jù)列的列名)方法用于存入數(shù)據(jù)、getAsXxxx(String key)方法用于取出數(shù)據(jù)
android訪問(wèn)數(shù)據(jù)庫(kù)怎么實(shí)現(xiàn)
Android對(duì)數(shù)據(jù)哭的訪問(wèn)可以使用ContentProvider, ContengResolver。游賣只能訪問(wèn)內(nèi)部數(shù)據(jù)庫(kù)sqlite。常用的做法是神遲逗用WebService來(lái)做網(wǎng)絡(luò)數(shù)據(jù)庫(kù)旦皮連接,Android通過(guò)Http來(lái)訪問(wèn)WebService,然后WebService提供對(duì)數(shù)據(jù)庫(kù)的相關(guān)操作。這樣就間接的實(shí)現(xiàn)了以Android操作管理SQL Server 數(shù)據(jù)庫(kù)。希望對(duì)你有所啟發(fā)或幫助,祝愉快!
android 怎么調(diào)用數(shù)據(jù)庫(kù)方法
android讀取數(shù)據(jù)庫(kù)可以簡(jiǎn)模使用sqlite一些api進(jìn)行讀取攔春,實(shí)例如下:
/**
* 查找一條數(shù)據(jù)
* @param uid
*/
public User find(Integer uid){
SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //創(chuàng)建數(shù)據(jù)庫(kù)輔助類
Cursor cursor =db.rawQuery(“select * from user where uid=?”, new String{uid.toString()}); //創(chuàng)建一個(gè)游標(biāo)
if(cursor.moveToFirst()){ //循環(huán)遍歷查找數(shù)組
int uid2=cursor.getInt(cursor.getColumnIndex(“uid”));
String uname=cursor.getString(cursor.getColumnIndex(“uname”));
String uaddress=cursor.getString(cursor.getColumnIndex(“uaddress”簡(jiǎn)咐耐));
User user=new User();
user.setUid(uid2);
user.setUname(uname);
user.setUaddress(uaddress);
return user;
}
cursor.close();
return null;
}
SQLite也支持SQL標(biāo)準(zhǔn)類型,VARCHAR、CHAR、BIGINT等。
創(chuàng)建數(shù)據(jù)庫(kù)
Android 不自動(dòng)提供數(shù)據(jù)庫(kù)。在 Android 應(yīng)用程序中使用 SQLite,必須自己創(chuàng)建數(shù)據(jù)庫(kù),然后創(chuàng)建表、索引,填充數(shù)據(jù)。Android 提供了 SQLiteOpenHelper 幫助你創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),只要繼承 SQLiteOpenHelper 類,就可以創(chuàng)建數(shù)據(jù)庫(kù)。繼頌指承了SQLiteOpenHelper的子類,必須實(shí)現(xiàn)三個(gè)方法:
1、構(gòu)造函數(shù),調(diào)用父類 SQLiteOpenHelper 的構(gòu)造函數(shù)。這個(gè)方法需要四個(gè)參數(shù):上下文環(huán)境(例如,一個(gè) Activity),數(shù)據(jù)庫(kù)名字,一個(gè)可選的游標(biāo)工廠(通常是 Null),一個(gè)代表你正在使用的數(shù)據(jù)庫(kù)模型版本的整數(shù)。
2、onCreate()方法,它需要一個(gè) SQLiteDatabase 對(duì)象作為參數(shù),根據(jù)需要對(duì)這個(gè)對(duì)象填充表和初始化數(shù)據(jù)。
3、onUpgrage() 方法,它需要三個(gè)參數(shù)祥兄,一個(gè)野宴配 SQLiteDatabase 對(duì)象,一個(gè)舊的版本號(hào)和一個(gè)新的版本號(hào),這樣可以清楚如何把一個(gè)數(shù)據(jù)庫(kù)從舊的模型轉(zhuǎn)變到新的模型。
android 數(shù)據(jù)庫(kù) 操作的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于android 數(shù)據(jù)庫(kù) 操作,「Android 數(shù)據(jù)庫(kù)操作」——實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與讀取,android 怎么往數(shù)據(jù)庫(kù)里面添加數(shù)據(jù),android訪問(wèn)數(shù)據(jù)庫(kù)怎么實(shí)現(xiàn),android 怎么調(diào)用數(shù)據(jù)庫(kù)方法的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
網(wǎng)站題目:「Android數(shù)據(jù)庫(kù)操作」——實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與讀取(android數(shù)據(jù)庫(kù)操作)
標(biāo)題URL:http://fisionsoft.com.cn/article/dhgdjes.html


咨詢
建站咨詢
