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

成都創(chuàng)新互聯(lián)是一家專業(yè)從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁設(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)營經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!
在開發(fā) Android 應(yīng)用程序時,常常需要使用數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的存儲與讀取。Android 支持多種數(shù)據(jù)庫,包括 SQLite、Realm 等。本文將以 SQLite 數(shù)據(jù)庫為例,介紹 Android 數(shù)據(jù)庫操作的實(shí)現(xiàn)方法,包括建表、增刪改查等操作。
一、SQLite 數(shù)據(jù)庫的創(chuàng)建與打開
在 Android 應(yīng)用程序中創(chuàng)建 SQLite 數(shù)據(jù)庫,可以通過使用 SQLiteOpenHelper 類。該類提供了創(chuàng)建、打開、更新數(shù)據(jù)庫的方法。
在使用 SQLiteOpenHelper 類創(chuàng)建數(shù)據(jù)庫時,需要重寫該類的 onCreate() 方法和 onUpgrade() 方法。onCreate() 方法在數(shù)據(jù)庫被創(chuàng)建時調(diào)用,通常用于創(chuàng)建數(shù)據(jù)庫表、初始化數(shù)據(jù)等操作。onUpgrade() 方法在數(shù)據(jù)庫版本升級時調(diào)用,可以用于更新表結(jié)構(gòu)、修改數(shù)據(jù)等操作。
以下是一個創(chuàng)建數(shù)據(jù)庫的例子:
“`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)建了一個名為 Book 的表,該表包含四個字段:id(主鍵)、author(作者)、price(價格)、pages(頁數(shù))和 name(書名)。
二、數(shù)據(jù)庫表的增刪改查操作
在實(shí)現(xiàn) Android 數(shù)據(jù)庫操作中,增刪改查是最基本的操作。下面我們將詳細(xì)介紹如何進(jìn)行這些操作。
1. 插入數(shù)據(jù)
向數(shù)據(jù)庫表中插入數(shù)據(jù),可以使用 SQLiteDatabase 中的 insert() 方法。該方法需要傳遞三個參數(shù):表名、空列的默認(rèn)值和要插入的數(shù)據(jù)。以下是一個插入數(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)建了一個 ContentValues 對象,用于存儲要插入的數(shù)據(jù)。然后通過 getWritableDatabase() 方法獲取 SQLiteDatabase 對象,調(diào)用 insert() 方法向 Book 表中插入數(shù)據(jù)。
2. 更新數(shù)據(jù)
更新數(shù)據(jù)庫表中的數(shù)據(jù),可以使用 SQLiteDatabase 中的 update() 方法。該方法需要傳遞四個參數(shù):表名、更新的數(shù)據(jù)、更新的條件和更新的條件參數(shù)。以下是一個更新數(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)建了一個 ContentValues 對象,用于存儲要更新的數(shù)據(jù)。然后通過 getWritableDatabase() 方法獲取 SQLiteDatabase 對象,調(diào)用 update() 方法更新 Book 表中名為 Android Development 的書的價格。
3. 刪除數(shù)據(jù)
從數(shù)據(jù)庫表中刪除數(shù)據(jù),可以使用 SQLiteDatabase 中的 delete() 方法。該方法需要傳遞三個參數(shù):表名、刪除條件和刪除條件參數(shù)。以下是一個刪除數(shù)據(jù)的例子:
“`java
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete(“Book”, “pages > ?”, new String[] { “500” });
“`
在上面的例子中,我們通過 getWritableDatabase() 方法獲取 SQLiteDatabase 對象,調(diào)用 delete() 方法刪除 Book 表中頁數(shù)大于 500 的書。
4. 查詢數(shù)據(jù)
從數(shù)據(jù)庫表中查詢數(shù)據(jù),可以使用 SQLiteDatabase 中的 query() 方法。該方法需要傳遞七個參數(shù):表名、返回的字段、查詢條件、查詢條件參數(shù)、分組條件、having 條件和排序條件。
以下是一個查詢數(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();
“`
在上面的例子中,我們通過 getWritableDatabase() 方法獲取 SQLiteDatabase 對象,調(diào)用 query() 方法查詢 Book 表中的所有數(shù)據(jù)。然后通過 moveToFirst() 和 moveToNext() 方法遍歷查詢結(jié)果,獲取想要的數(shù)據(jù)。
三、
通過本文,我們了解了 Android 數(shù)據(jù)庫操作的實(shí)現(xiàn)方法,包括 SQLite 數(shù)據(jù)庫的創(chuàng)建與打開、數(shù)據(jù)庫表的增刪改查等操作。在實(shí)際開發(fā)中,我們可以根據(jù)實(shí)際需要,靈活運(yùn)用這些操作,實(shí)現(xiàn)數(shù)據(jù)的存儲與讀取。
相關(guān)問題拓展閱讀:
- android 怎么往數(shù)據(jù)庫里面添加數(shù)據(jù)
- android訪問數(shù)據(jù)庫怎么實(shí)現(xiàn)
- android 怎么調(diào)用數(shù)據(jù)庫方法
android 怎么往數(shù)據(jù)庫里面添加數(shù)據(jù)
參考如下內(nèi)容:
你通過getText()方法侍兄盯首先得到輸入的值,然后調(diào)用數(shù)據(jù)庫的插入方法 db.insert();插入到數(shù)塵判據(jù)庫中就行 就想這樣
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)用這個 addData()方法時就會向老和數(shù)據(jù)庫中插入數(shù)據(jù)了
一、引入
數(shù)據(jù)庫創(chuàng)建的問題解決了,接下來就該使用數(shù)據(jù)庫實(shí)現(xiàn)應(yīng)用程序功能的時候了?;?/p>
本的操作包括創(chuàng)建、讀取、更新、刪除,即我們通常說的 CRUD(Create, Read, Update, Delete)。
在實(shí)現(xiàn)這些操作的時候,我們會使用到兩個比較重要的類 SQLiteDatabase 類和 Cursor 類蔽吵叢。
二、創(chuàng)建表
1,execSQL(String sql):執(zhí)行一條 sql 語句,且執(zhí)行操作不能為 SELECT
因?yàn)樗姆祷刂禐?void,所以推薦使用 insert、update 方法等
2.,execSQL (String sql,Object bindArgs)
sql:執(zhí)行一條 sql 語句
bindArgs:為 sql 語句中的?賦值
三、添加數(shù)據(jù)
1、execSQL(String sql)
2、使用對象的 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ù)庫中的表名
nullColumnHack:指定默認(rèn)插入字段,為 null 時能插入數(shù)據(jù)
values:表示插入字段所對應(yīng)的值,使用 put 方法。
四、刪除數(shù)據(jù)
1、execSQL(String sql)
2、使用對象的 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ù)庫的表名
whereClause:where 子句,比如:_id=?
whereArgs:where 子句中?的值
五、修改數(shù)據(jù)
1、execSQL(String sql)
2、使用對象的 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ù)庫的表名
values:代表要修改的值,修改方法還是宏櫻 put(key,values)
whereClause:條件子句,比如 id=?,name=?
whereArgs:為 whereClause 中的?賦值,比如:new String{“1″,”張三”}
圖:
參考代碼:
程序內(nèi)使用SQLite數(shù)據(jù)庫是通過SQLiteOpenHelper進(jìn)行操作
1.自己寫個類繼承SQLiteOpenHelper,重寫以下3個方法
public void onCreate(SQLiteDatabase db) 碰肆
{//創(chuàng)建數(shù)據(jù)庫時的操作,如建表}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
//版本更新的操作
}
2. 通過SQLiteOpenHelper的getWritableDatabase()獲得一個SQLiteDatabase數(shù)據(jù)庫,以后的操作都是對SQLiteDatabase進(jìn)行操作。
3.對得到的SQLiteDatabase對象進(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();
}
//自己寫的方法,對數(shù)據(jù)庫進(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訪問數(shù)據(jù)庫怎么實(shí)現(xiàn)
Android對數(shù)據(jù)哭的訪問可以使用ContentProvider, ContengResolver。游賣只能訪問內(nèi)部數(shù)據(jù)庫sqlite。常用的做法是神遲逗用WebService來做網(wǎng)絡(luò)數(shù)據(jù)庫旦皮連接,Android通過Http來訪問WebService,然后WebService提供對數(shù)據(jù)庫的相關(guān)操作。這樣就間接的實(shí)現(xiàn)了以Android操作管理SQL Server 數(shù)據(jù)庫。希望對你有所啟發(fā)或幫助,祝愉快!
android 怎么調(diào)用數(shù)據(jù)庫方法
android讀取數(shù)據(jù)庫可以簡模使用sqlite一些api進(jìn)行讀取攔春,實(shí)例如下:
/**
* 查找一條數(shù)據(jù)
* @param uid
*/
public User find(Integer uid){
SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //創(chuàng)建數(shù)據(jù)庫輔助類
Cursor cursor =db.rawQuery(“select * from user where uid=?”, new String{uid.toString()}); //創(chuàng)建一個游標(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”簡咐耐));
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ù)庫
Android 不自動提供數(shù)據(jù)庫。在 Android 應(yīng)用程序中使用 SQLite,必須自己創(chuàng)建數(shù)據(jù)庫,然后創(chuàng)建表、索引,填充數(shù)據(jù)。Android 提供了 SQLiteOpenHelper 幫助你創(chuàng)建一個數(shù)據(jù)庫,只要繼承 SQLiteOpenHelper 類,就可以創(chuàng)建數(shù)據(jù)庫。繼頌指承了SQLiteOpenHelper的子類,必須實(shí)現(xiàn)三個方法:
1、構(gòu)造函數(shù),調(diào)用父類 SQLiteOpenHelper 的構(gòu)造函數(shù)。這個方法需要四個參數(shù):上下文環(huán)境(例如,一個 Activity),數(shù)據(jù)庫名字,一個可選的游標(biāo)工廠(通常是 Null),一個代表你正在使用的數(shù)據(jù)庫模型版本的整數(shù)。
2、onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數(shù),根據(jù)需要對這個對象填充表和初始化數(shù)據(jù)。
3、onUpgrage() 方法,它需要三個參數(shù)祥兄,一個野宴配 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣可以清楚如何把一個數(shù)據(jù)庫從舊的模型轉(zhuǎn)變到新的模型。
android 數(shù)據(jù)庫 操作的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于android 數(shù)據(jù)庫 操作,「Android 數(shù)據(jù)庫操作」——實(shí)現(xiàn)數(shù)據(jù)存儲與讀取,android 怎么往數(shù)據(jù)庫里面添加數(shù)據(jù),android訪問數(shù)據(jù)庫怎么實(shí)現(xiàn),android 怎么調(diào)用數(shù)據(jù)庫方法的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標(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)可。
當(dāng)前文章:「Android數(shù)據(jù)庫操作」——實(shí)現(xiàn)數(shù)據(jù)存儲與讀取(android數(shù)據(jù)庫操作)
當(dāng)前地址:http://www.dlmjj.cn/article/dhgdjes.html


咨詢
建站咨詢
