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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在Android上建立數(shù)據(jù)庫? (android數(shù)據(jù)庫建立數(shù)據(jù)庫)

在Android應(yīng)用程序中,存儲(chǔ)和管理數(shù)據(jù)是非常重要的一部分。Android提供了SQLite數(shù)據(jù)庫來存儲(chǔ)和管理數(shù)據(jù)。SQLite是一個(gè)輕量級的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),能夠提供快速和高效的數(shù)據(jù)存儲(chǔ)和檢索功能。在本文中,我們將介紹如何在Android上建立和管理SQLite數(shù)據(jù)庫。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站與策劃設(shè)計(jì),銀川網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:銀川等地區(qū)。銀川做網(wǎng)站價(jià)格咨詢:18982081108

之一步:創(chuàng)建數(shù)據(jù)庫幫助器類

在Android開發(fā)中,建議使用單例模式來創(chuàng)建數(shù)據(jù)庫幫助器類。這樣可以確保在整個(gè)應(yīng)用程序中只有一個(gè)數(shù)據(jù)庫連接。它還可以避免重復(fù)創(chuàng)建數(shù)據(jù)庫實(shí)例,從而提高應(yīng)用程序的性能。

在創(chuàng)建數(shù)據(jù)庫幫助器類之前,需要確保我們已經(jīng)準(zhǔn)備好了創(chuàng)建數(shù)據(jù)庫所需的所有數(shù)據(jù)表。創(chuàng)建數(shù)據(jù)表的語法與標(biāo)準(zhǔn)的SQL語法類似。為了避免代碼中的硬編碼,可以定義一個(gè)常量類來存儲(chǔ)所有的SQL查詢語句。

下面是一個(gè)示例代碼片段,它演示了如何創(chuàng)建一個(gè)名為“my_database.db”的數(shù)據(jù)庫和一個(gè)數(shù)據(jù)表:

“`

public class MyDatabaseHelper extends SQLiteOpenHelper {

private static final String DB_NAME = “my_database.db”;

private static final int DB_VERSION = 1;

private static final String TABLE_NAME = “my_table”;

private static final String COL_NAME = “name”;

private static final String COL_AGE = “age”;

private static final String CREATE_SQL = “CREATE TABLE ” + TABLE_NAME +

” (_id INTEGER PRIMARY KEY AUTOINCREMENT, ” +

COL_NAME + ” TEXT NOT NULL, ” +

COL_AGE + ” INTEGER);”;

private static final String DROP_SQL = “DROP TABLE IF EXISTS ” + TABLE_NAME;

private static MyDatabaseHelper sInstance;

public synchronized static MyDatabaseHelper getInstance(Context context) {

if (sInstance == null) {

sInstance = new MyDatabaseHelper(context.getApplicationContext());

}

return sInstance;

}

private MyDatabaseHelper(Context context) {

super(context, DB_NAME, null, DB_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(CREATE_SQL);

}

@Override

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

db.execSQL(DROP_SQL);

onCreate(db);

}

}

“`

在此代碼中,我們實(shí)現(xiàn)了數(shù)據(jù)庫幫助器類MyDatabaseHelper,并定義了常量DB_NAME和DB_VERSION。我們還定義了常量TABLE_NAME、COL_NAME和COL_AGE來存儲(chǔ)數(shù)據(jù)表的名稱和列名稱。CREATE_SQL和DROP_SQL是創(chuàng)建和刪除數(shù)據(jù)表的SQL查詢語句。我們實(shí)現(xiàn)了onCreate()和onUpgrade()方法,這兩個(gè)方法將在數(shù)據(jù)庫創(chuàng)建和數(shù)據(jù)庫升級時(shí)自動(dòng)調(diào)用。

第二步:打開/關(guān)閉數(shù)據(jù)庫連接

在Android中,所有的數(shù)據(jù)庫操作都必須通過SQLiteDatabase類來完成。要訪問數(shù)據(jù)庫,需要首先打開數(shù)據(jù)庫連接。在完成數(shù)據(jù)庫操作后,必須關(guān)閉數(shù)據(jù)庫連接,以便釋放資源。

“`

public class MyDataManager {

private SQLiteDatabase mDatabase;

public MyDataManager(Context context) {

mDatabase = MyDatabaseHelper.getInstance(context).getWritableDatabase();

}

public void close() {

if (mDatabase != null) {

mDatabase.close();

mDatabase = null;

}

}

}

“`

在此代碼中,我們實(shí)現(xiàn)了MyDataManager類,它用于管理數(shù)據(jù)庫連接。我們實(shí)現(xiàn)了構(gòu)造函數(shù)和關(guān)閉數(shù)據(jù)庫連接的方法。在構(gòu)造函數(shù)中,我們獲取數(shù)據(jù)庫連接,以便執(zhí)行SQL查詢語句。在關(guān)閉方法中,我們關(guān)閉數(shù)據(jù)庫連接,并將mDatabase設(shè)置為null,以便在下一次打開數(shù)據(jù)庫連接時(shí)重新創(chuàng)建。

第三步:插入數(shù)據(jù)

在Android中,添加數(shù)據(jù)通常使用insert方法。該方法接受三個(gè)參數(shù),之一個(gè)是表名,第二個(gè)是要插入的數(shù)據(jù),第三個(gè)是插入數(shù)據(jù)時(shí)需要忽略的列的名稱。在插入數(shù)據(jù)時(shí),可以使用ContentValues類來存儲(chǔ)數(shù)據(jù)。

“`

public class MyDataManager {

public void insertData(String name, int age) {

ContentValues values = new ContentValues();

values.put(MyDatabaseHelper.COL_NAME, name);

values.put(MyDatabaseHelper.COL_AGE, age);

mDatabase.insert(MyDatabaseHelper.TABLE_NAME, null, values);

}

}

“`

在此代碼中,我們實(shí)現(xiàn)了insertData方法,可將數(shù)據(jù)插入名為“my_table”的數(shù)據(jù)表中的“name”和“age”列。

第四步:查詢數(shù)據(jù)

查詢數(shù)據(jù)通常使用query方法。該方法接受四個(gè)參數(shù),之一個(gè)是表名,第二個(gè)是要返回的列,第三個(gè)是WHERE子句,第四個(gè)是WHERE子句的參數(shù)。查詢結(jié)果將返回一個(gè)光標(biāo),光標(biāo)用于遍歷結(jié)果集。

“`

public class MyDataManager {

public Cursor queryData() {

String[] columns = {MyDatabaseHelper.COL_NAME, MyDatabaseHelper.COL_AGE};

return mDatabase.query(MyDatabaseHelper.TABLE_NAME, columns, null, null, null, null, null);

}

}

“`

在此代碼中,我們實(shí)現(xiàn)了queryData方法,以返回“my_table”數(shù)據(jù)表中的所有數(shù)據(jù)。

第五步:更新數(shù)據(jù)

更新數(shù)據(jù)通常使用update方法。該方法接受四個(gè)參數(shù),之一個(gè)是表名,第二個(gè)是要更新的數(shù)據(jù),第三個(gè)是WHERE子句,第四個(gè)是WHERE子句的參數(shù)。

“`

public class MyDataManager {

public void updateData(String name, int age) {

ContentValues values = new ContentValues();

values.put(MyDatabaseHelper.COL_NAME, name);

values.put(MyDatabaseHelper.COL_AGE, age);

mDatabase.update(MyDatabaseHelper.TABLE_NAME, values, MyDatabaseHelper.COL_AGE + “=?”, new String[] { String.valueOf(age) });

}

}

“`

在此代碼中,我們實(shí)現(xiàn)了updateData方法,以更新年齡等于參數(shù)age的人員的姓名。

第六步:刪除數(shù)據(jù)

刪除數(shù)據(jù)通常使用delete方法。該方法接受三個(gè)參數(shù),之一個(gè)是表名,第二個(gè)是WHERE子句,第三個(gè)是WHERE子句的參數(shù)。

“`

public class MyDataManager {

public void deleteData(int age) {

mDatabase.delete(MyDatabaseHelper.TABLE_NAME, MyDatabaseHelper.COL_AGE + “=?”, new String[] { String.valueOf(age) });

}

}

“`

在此代碼中,我們實(shí)現(xiàn)了deleteData方法,以刪除年齡等于參數(shù)age的人員的所有記錄。

在Android開發(fā)中,SQLite數(shù)據(jù)庫是最常用和更受歡迎的數(shù)據(jù)存儲(chǔ)技術(shù)之一。通過本文介紹的一些技巧和技術(shù),開發(fā)人員可以輕松地構(gòu)建和管理SQLite數(shù)據(jù)庫。讓我們開始構(gòu)建您的應(yīng)用程序,并使用SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ)和管理!

相關(guān)問題拓展閱讀:

  • Android創(chuàng)建數(shù)據(jù)庫需要做哪些事情

Android創(chuàng)建數(shù)據(jù)庫需要做哪些事情

首先:使用Eclipse創(chuàng)建一個(gè)Android項(xiàng)目,取名為Database

操作數(shù)據(jù)庫的更佳實(shí)踐是創(chuàng)建一個(gè)輔助類,由它封裝所有對數(shù)據(jù)庫的復(fù)雜訪問,對于調(diào)用代碼而言它是透明的,因此我創(chuàng)建了一個(gè)

DBAdapter

的輔助類,由它創(chuàng)建、打開、關(guān)閉和使用SQLite數(shù)據(jù)庫。

首先,在src/文件夾

(

在這個(gè)例子中是

src/net.learn2develop.Database)下添加一個(gè)DBAdapter.java文件。

在DBAdapter.java文件中,導(dǎo)入所有你要使用到的命名空間:

package net.learn2develop.Databases;

import android.content.ContentValues;

import android.content.Context;

import android.

database

.

Cursor

;

import android.

database

.SQLException;

import android.

database

.sqlite.SQLiteDatabase;

import android.

database

.sqlite.SQLiteOpenHelper;

import android.util.

Log

;

public

class DBAdapter

{

}

.sqlite.SQLiteDatabase;

import android.

database

.sqlite.SQLiteOpenHelper;

import android.util.

Log

;

public

class DBAdapter

{

}

接下來創(chuàng)建一個(gè)數(shù)據(jù)庫,取名為bookstitles在DBAdapter.java文件中,定義清單1中的常量。清單1 定義DBAdapter.java文件中的常量

package net.learn2develop.

Database

;

import android.content.ContentValues;

import android.content.Context;

import android.

database

.

Cursor

;

import android.

database

.SQLException;

import android.

database

.sqlite.SQLiteDatabase;

import android.

database

.sqlite.SQLiteOpenHelper;

import android.util.Log; public class DBAdapter {

public static final String KEY_ROWID = “_id”; public static final String KEY_ISBN = “in”; public static final String KEY_TITLE = “title”;

public static final String KEY_PUBLISHER = “publisher”; private static final String TAG = “DBAdapter”; private static final String DATABASE_NAME = “books”; private static final String DATABASE_TABLE = “titles”; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE =

“create table titles (_id integer primary key autoincrement, ” + “in text not null, title text not null, ” + “publisher text not null);”; private final Context context; }

DATABASE_CREATE常量包括創(chuàng)建扮禪titles表的SQL語句。

在DBAdapter類中,你可以擴(kuò)展SQLiteOpenHelper類,遲液它是一個(gè)Android輔助類,主要用于數(shù)據(jù)庫碼缺物創(chuàng)建和版本管理。實(shí)際上,你可以覆蓋onCreate()和onUpgrade()方法,如清單2所示。

清單2 在DBAdapter類中,擴(kuò)展SQLiteOpenHelper類覆蓋onCreate() 和 onUpgrade()方法

package net.learn2develop.Database; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter {

public static final String KEY_ROWID = “_id”;

public static final String KEY_ISBN = “in”;

public static final String KEY_TITLE = “title”;

public static final String KEY_PUBLISHER = “publisher”;

private static final String TAG = “DBAdapter”;

private static final String DATABASE_NAME = “books”;

private static final String DATABASE_TABLE = “titles”;

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE =

“create table titles (_id integer primary key autoincrement, “

+ “in text not null, title text not null, “

+ “publisher text not null);”;

private final Context context;

private DatabaseHelper DBHelper;

private SQLiteDatabase db;

public DBAdapter(Context ctx)

{

this.context = ctx;

DBHelper = new DatabaseHelper(context);

}

private static class DatabaseHelper extends SQLiteOpenHelper

{

DatabaseHelper(Context context)

{

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db)

{

db.execSQL(DATABASE_CREATE);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion,

int newVersion)

{

Log.w(TAG, “Upgrading database from version ” + oldVersion

+ ” to “

+ newVersion + “, which will destroy all old data”);

db.execSQL(“DROP TABLE IF EXISTS titles”);

onCreate(db);

}

}

}

onCreate()方法創(chuàng)建一個(gè)新的數(shù)據(jù)庫,onUpgrade()方法用于升級數(shù)據(jù)庫,這可以通過檢查DATABASE_VERSION常量定義的值來實(shí)現(xiàn),對于onUpgrade()方法而言,只不過是簡單地刪除表,然后在創(chuàng)建表而已。

現(xiàn)在你可以定義不同的方法來打開和關(guān)閉數(shù)據(jù)庫,如清單3中的添加/編輯/刪除/行的函數(shù)。

清單3 定義打開和關(guān)閉數(shù)據(jù)庫以及增加/編輯/刪除表中行的方法

public class DBAdapter

{

//…

//…

//—打開數(shù)據(jù)庫—

public DBAdapter open() throws SQLException

{

db = DBHelper.getWritableDatabase();

return this;

}

//—關(guān)閉數(shù)據(jù)庫—

public void close()

{

DBHelper.close();

}

//—向數(shù)據(jù)庫插入一個(gè)標(biāo)題—

public long insertTitle(String in, String title, String publisher)

{

ContentValues initialValues = new ContentValues();

initialValues.put(KEY_ISBN, in);

initialValues.put(KEY_TITLE, title);

initialValues.put(KEY_PUBLISHER, publisher);

return db.insert(DATABASE_TABLE, null, initialValues);

}

//—?jiǎng)h除一個(gè)指定的標(biāo)題—

public boolean deleteTitle(long rowId)

{

return db.delete(DATABASE_TABLE, KEY_ROWID + “=” + rowId, null) > 0;

}

//—檢索所有標(biāo)題—

public Cursor getAllTitles()

{

return db.query(DATABASE_TABLE, new String {

KEY_ROWID,

KEY_ISBN,

KEY_TITLE,

KEY_PUBLISHER},

null,

null,

null,

null,

null);

}

//—檢索一個(gè)指定的標(biāo)題—

public Cursor getTitle(long rowId) throws SQLException

{

Cursor mCursor =

db.query(true, DATABASE_TABLE, new String {

KEY_ROWID,

KEY_ISBN,

KEY_TITLE,

KEY_PUBLISHER

},

KEY_ROWID + “=” + rowId,

null,

null,

null,

null,

null);

if (mCursor != null) {

mCursor.moveToFirst();

}

return mCursor;

}

//—更新一個(gè)標(biāo)題—

public boolean updateTitle(long rowId, String in,

String title, String publisher)

{

ContentValues args = new ContentValues();

args.put(KEY_ISBN, in);

args.put(KEY_TITLE, title);

args.put(KEY_PUBLISHER, publisher);

return db.update(DATABASE_TABLE, args,

KEY_ROWID + “=” + rowId, null) > 0;

}

}

注意Android使用Cursor類返回一個(gè)需要的值,Cursor作為一個(gè)指針從數(shù)據(jù)庫查詢返回結(jié)果集,使用Cursor允許Android更有效地管理它們需要的行和列,你使用ContentValues對象存儲(chǔ)鍵/值對,它的put()方法允許你插入不同數(shù)據(jù)類型的鍵值。

清單4顯示了完整的DBAdapter.java源代碼。

清單4 DBAdapter.java完整源代碼

package net.learn2develop.Database;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class DBAdapter

{

public static final String KEY_ROWID = “_id”;

public static final String KEY_ISBN = “in”;

public static final String KEY_TITLE = “title”;

public static final String KEY_PUBLISHER = “publisher”;

private static final String TAG = “DBAdapter”;

private static final String DATABASE_NAME = “books”;

private static final String DATABASE_TABLE = “titles”;

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE =

“create table titles (_id integer primary key autoincrement, “

+ “in text not null, title text not null, “

+ “publisher text not null);”;

private final Context context;

private DatabaseHelper DBHelper;

private SQLiteDatabase db;

public DBAdapter(Context ctx)

{

this.context = ctx;

DBHelper = new DatabaseHelper(context);

}

private static class DatabaseHelper extends SQLiteOpenHelper

{

DatabaseHelper(Context context)

{

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db)

{

db.execSQL(DATABASE_CREATE);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion,

int newVersion)

{

Log.w(TAG, “Upgrading database from version ” + oldVersion

+ ” to “

+ newVersion + “, which will destroy all old data”);

db.execSQL(“DROP TABLE IF EXISTS titles”);

onCreate(db);

}

}

//—打開數(shù)據(jù)庫—

public DBAdapter open() throws SQLException

{

db = DBHelper.getWritableDatabase();

return this;

}

//—關(guān)閉數(shù)據(jù)庫—

public void close()

{

DBHelper.close();

}

//—向數(shù)據(jù)庫中插入一個(gè)標(biāo)題—

public long insertTitle(String in, String title, String publisher)

{

ContentValues initialValues = new ContentValues();

initialValues.put(KEY_ISBN, in);

initialValues.put(KEY_TITLE, title);

initialValues.put(KEY_PUBLISHER, publisher);

return db.insert(DATABASE_TABLE, null, initialValues);

}

//—?jiǎng)h除一個(gè)指定標(biāo)題—

public boolean deleteTitle(long rowId)

{

return db.delete(DATABASE_TABLE, KEY_ROWID +

“=” + rowId, null) > 0;

}

//—檢索所有標(biāo)題—

public Cursor getAllTitles()

{

return db.query(DATABASE_TABLE, new String {

KEY_ROWID,

KEY_ISBN,

KEY_TITLE,

KEY_PUBLISHER},

null,

null,

null,

null,

null);

}

//—檢索一個(gè)指定標(biāo)題—

public Cursor getTitle(long rowId) throws SQLException

{

Cursor mCursor =

db.query(true, DATABASE_TABLE, new String {

KEY_ROWID,

KEY_ISBN,

KEY_TITLE,

KEY_PUBLISHER

},

KEY_ROWID + “=” + rowId,

null,

null,

null,

null,

null);

if (mCursor != null) {

mCursor.moveToFirst();

}

return mCursor;

}

//—更新一個(gè)標(biāo)題—

public boolean updateTitle(long rowId, String in,

String title, String publisher)

{

ContentValues args = new ContentValues();

args.put(KEY_ISBN, in);

args.put(KEY_TITLE, title);

args.put(KEY_PUBLISHER, publisher);

return db.update(DATABASE_TABLE, args,

KEY_ROWID + “=” + rowId, null) > 0;

}

}

創(chuàng)建一個(gè)類繼承數(shù)據(jù)庫幫助類,在其中寫數(shù)據(jù)庫創(chuàng)建,更新方法

關(guān)于android數(shù)據(jù)庫建立數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。


新聞名稱:如何在Android上建立數(shù)據(jù)庫? (android數(shù)據(jù)庫建立數(shù)據(jù)庫)
瀏覽地址:http://www.dlmjj.cn/article/dpocdos.html