日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
深入了解Android數(shù)據(jù)庫(kù)操作詳解(android數(shù)據(jù)庫(kù)詳解)

隨著 Android 手機(jī)的普及,越來(lái)越多的應(yīng)用程序需要使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和管理數(shù)據(jù)。而 Android 提供了一個(gè)輕量級(jí)的 SQLite 數(shù)據(jù)庫(kù),可以讓開(kāi)發(fā)者方便地進(jìn)行數(shù)據(jù)庫(kù)操作。本文將深入了解 Android 數(shù)據(jù)庫(kù)的操作,包括數(shù)據(jù)庫(kù)的創(chuàng)建和升級(jí)、表的創(chuàng)建和刪除、數(shù)據(jù)的插入和查詢等。

10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有本溪免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一、數(shù)據(jù)庫(kù)的創(chuàng)建與升級(jí)

SQLite 數(shù)據(jù)庫(kù)是 Android 系統(tǒng)中內(nèi)置的一種嵌入式數(shù)據(jù)庫(kù),開(kāi)發(fā)者可以在應(yīng)用程序中方便地創(chuàng)建和使用它。在使用 SQLite 數(shù)據(jù)庫(kù)之前,需要先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。下面是創(chuàng)建數(shù)據(jù)庫(kù)的代碼:

“`

public static final String DB_NAME = “my_db”;

public static final int DB_VERSION = 1;

public DatabaseHelper(Context context) {

super(context, DB_NAME, null, DB_VERSION);

}

“`

上面的代碼定義了一個(gè)名為“my_db”、版本號(hào)為 1 的數(shù)據(jù)庫(kù),通過(guò)繼承 SQLiteOpenHelper 實(shí)現(xiàn)創(chuàng)建和升級(jí)數(shù)據(jù)庫(kù)的操作。在創(chuàng)建完數(shù)據(jù)庫(kù)之后,就可以在應(yīng)用程序中使用它了。

如果需要升級(jí)數(shù)據(jù)庫(kù),可以通過(guò)在 onUpgrade() 方法中修改數(shù)據(jù)庫(kù)表結(jié)構(gòu)來(lái)實(shí)現(xiàn)。例如下面的代碼實(shí)現(xiàn)了從版本 1 升級(jí)到版本 2 并添加了一個(gè)新的表:

“`

public static final int DB_VERSION = 2;

@Override

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

if (oldVersion

db.execSQL(“CREATE TABLE new_table (id INTEGER PRIMARY KEY AUTOINCREMENT, value TEXT)”);

}

}

“`

在 onUpgrade() 方法中,首先判斷原數(shù)據(jù)庫(kù)的版本號(hào)是否小于 2,如果是則執(zhí)行創(chuàng)建新表的 SQL 語(yǔ)句。在 Android 中,數(shù)據(jù)庫(kù)的升級(jí)一般是通過(guò)增加版本號(hào)來(lái)實(shí)現(xiàn)的。

二、表的創(chuàng)建與刪除

在創(chuàng)建完數(shù)據(jù)庫(kù)之后,下一步就是創(chuàng)建表格??梢酝ㄟ^(guò)執(zhí)行 SQL 語(yǔ)句來(lái)創(chuàng)建表格,例如下面的代碼創(chuàng)建了一個(gè)名為“my_table”的表格:

“`

public static final String TABLE_NAME = “my_table”;

public static final String ID_COLUMN = “id”;

public static final String NAME_COLUMN = “name”;

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(“CREATE TABLE ” + TABLE_NAME + ” (” + ID_COLUMN + ” INTEGER PRIMARY KEY AUTOINCREMENT, ” + NAME_COLUMN + ” TEXT)”);

}

“`

上面的代碼創(chuàng)建了一個(gè)包含 id 和 name 兩個(gè)字段的表格,其中 id 是主鍵并自動(dòng)遞增。通過(guò)類似的語(yǔ)句可以創(chuàng)建具有不同字段和約束條件的表格。

除了創(chuàng)建表格,還可以通過(guò) SQL 語(yǔ)句來(lái)刪除表格,例如下面的代碼刪除了名為“my_table”的表格:

“`

@Override

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

if (oldVersion

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

}

}

“`

在升級(jí)數(shù)據(jù)庫(kù)的操作中,如果要?jiǎng)h除表格需要先判斷該表格是否存在??赏ㄟ^(guò)“DROP TABLE IF EXISTS”語(yǔ)句實(shí)現(xiàn)刪除操作。在刪除表格之前,需要把表格中的數(shù)據(jù)備份到其他位置以免數(shù)據(jù)丟失。

三、數(shù)據(jù)的插入與查詢

在創(chuàng)建表格之后,下一步就是對(duì)表格進(jìn)行操作。常見(jiàn)的操作有數(shù)據(jù)的插入、刪除、修改和查詢。本節(jié)討論數(shù)據(jù)的插入和查詢操作。

1、數(shù)據(jù)的插入

向表格中插入數(shù)據(jù),可以使用 insert() 方法。例如下面的代碼向名為“my_table”的表格插入一行數(shù)據(jù):

“`

ContentValues values = new ContentValues();

values.put(NAME_COLUMN, “test_name”);

long newRowId = db.insert(TABLE_NAME, null, values);

“`

上面的代碼中,首先用 ContentValues 對(duì)象封裝數(shù)據(jù),然后調(diào)用 insert() 方法向表格中插入該數(shù)據(jù)。insert() 方法返回一個(gè)表示新行 id 的值,表示該數(shù)據(jù)所在行的 id 值,可以用于后續(xù)的操作。

2、數(shù)據(jù)的查詢

查詢表格中的數(shù)據(jù),可以使用 query() 方法。例如下面的代碼查詢名為“my_table”的表格中所有數(shù)據(jù):

“`

String[] projection = {ID_COLUMN, NAME_COLUMN};

String sortOrder = ID_COLUMN + ” DESC”;

Cursor cursor = db.query(TABLE_NAME, projection, null, null, null, null, sortOrder);

while (cursor.moveToNext()) {

long id = cursor.getLong(cursor.getColumnIndexOrThrow(ID_COLUMN));

String name = cursor.getString(cursor.getColumnIndexOrThrow(NAME_COLUMN));

}

cursor.close();

“`

上面的代碼中,首先定義了需要返回的字段數(shù)組和排序方式。然后調(diào)用 query() 方法查詢表格中的數(shù)據(jù),并將查詢結(jié)果封裝到 Cursor 對(duì)象中。從 Cursor 對(duì)象中可以逐行提取數(shù)據(jù)并進(jìn)行處理。

四、

本文深入介紹了 Android 數(shù)據(jù)庫(kù)的操作,包括數(shù)據(jù)庫(kù)的創(chuàng)建和升級(jí)、表格的創(chuàng)建和刪除、數(shù)據(jù)的插入和查詢等。掌握了這些操作之后,開(kāi)發(fā)者就能夠方便地使用 SQLite 數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和管理 App 的數(shù)據(jù)了。當(dāng)然,實(shí)際應(yīng)用場(chǎng)景下,還需要根據(jù)不同的需求進(jìn)行具體的設(shè)計(jì)和實(shí)現(xiàn)。

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

  • android怎么鏈接數(shù)據(jù)庫(kù)mysql
  • 請(qǐng)簡(jiǎn)要描述Android中數(shù)據(jù)庫(kù)操作的一般步驟

android怎么鏈接數(shù)據(jù)庫(kù)mysql

有點(diǎn)多請(qǐng)耐心看完。

希望能幫助你,還請(qǐng)及時(shí)采納謝謝。

一.前言

android連接數(shù)據(jù)庫(kù)的方式有兩種,之一種是通過(guò)連接服務(wù)器,再由服務(wù)器讀取數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的增刪改查,這也是我們常用的方式。第二種方式是android直接連接數(shù)據(jù)庫(kù),這種方式非常耗手機(jī)內(nèi)存,而且容易被

反編譯

造成

安全隱患

,所以在實(shí)際項(xiàng)目中不推薦使用。

二.準(zhǔn)備工作

1.加載外部jar包

在Android工程中要使用jdbc的話,要導(dǎo)入jdbc的外部jar包,因?yàn)樵贘ava的jdk中并沒(méi)有jdbc的api,我使用的jar包是mysql-connector-java-5.1.18-bin.jar包,網(wǎng)絡(luò)上有使用mysql-connector-java-5.1.18-bin.jar包的,自己去用的時(shí)候發(fā)現(xiàn)不兼容,所以下載了比較新版本的,jar包可以去官網(wǎng)下載,也可以去百度,有很多前人們上傳的。

2.導(dǎo)入jar包的方式

方式一:

可以在項(xiàng)目的build.gradle文件中直接添加如下語(yǔ)句導(dǎo)入

compile files(‘libs/mysql-connector-java-5.1.18-bin.jar’)

方式二:下載jar包復(fù)制到項(xiàng)目的libs目錄下,然后右鍵復(fù)制過(guò)來(lái)的jar包Add as libs

三.建立數(shù)據(jù)庫(kù)連接

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_jdbc);

new Thread(runnable).start();

}

Handler myHandler=new Handler(){

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

Bundle data=new Bundle();

data=msg.getData();

//System.out.println(“id:”+data.get(“id”).toString()); //輸出第n行,列名為“id”的值

Log.e(“TAG”,”id:”+data.get(“id”).toString());

TextView tv= (TextView) findViewById(R.id.jdbc);

//System.out.println(“content:”+data.get(“content”).toString());

}

};

Runnable runnable=new Runnable() {

private Connection con = null;

@Override

public void run() {

// TODO Auto-generated method stub

try {

Class.forName(“com.mysql.jdbc.Driver”);

//引用代碼此處需要修改,address為數(shù)據(jù)IP,Port為

端口號(hào)

,DBName為數(shù)據(jù)名稱,UserName為數(shù)據(jù)庫(kù)登錄賬戶,Password為數(shù)據(jù)庫(kù)登錄密碼

con =

//DriverManager.getConnection(“jdbc: “root”, “”);

DriverManager.getConnection(“jdbc:

“,

UserName,Password);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

testConnection(con); //測(cè)試數(shù)據(jù)庫(kù)連接

} catch (java.sql.SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void testConnection(Connection con1) throws java.sql.SQLException {

try {

String sql = “select * from ecs_users”;//查詢表名為“oner_alarm”的所有內(nèi)容

Statement stmt = con1.createStatement();//創(chuàng)建Statement

ResultSet rs = stmt.executeQuery(sql);//ResultSet類似Cursor

//ResultSet最初指向之一行

Bundle bundle=new Bundle();

while (rs.next()) {

bundle.clear();

bundle.putString(“id”,rs.getString(“userid”));

//bundle.putString(“content”,rs.getString(“content”));

Message msg=new Message();

msg.setData(bundle);

myHandler.sendMessage(msg);

}

rs.close();

stmt.close();

} catch (SQLException e) {

} finally {

if (con1 != null)

try {

con1.close();

} catch (SQLException e) {}

}

}

};

注意:

在Android4.0之后,不允許在主

線程

中進(jìn)行比較耗時(shí)的操作(連接數(shù)據(jù)庫(kù)就屬于比較耗時(shí)的操作),需要開(kāi)一個(gè)新的線程來(lái)處理這種耗時(shí)的操作,沒(méi)新線程時(shí),一直就是程序直接退出,開(kāi)了一個(gè)新線程處理直接,就沒(méi)問(wèn)題了。

當(dāng)然,連接數(shù)據(jù)庫(kù)是需要網(wǎng)絡(luò)的,千萬(wàn)別忘了添加訪問(wèn)網(wǎng)絡(luò)權(quán)限:

四.bu

1.導(dǎo)入的jar包一定要正確

2.連接數(shù)據(jù)庫(kù)一定要開(kāi)啟新線程

3.數(shù)據(jù)庫(kù)的IP一定要是可以ping通的,局域網(wǎng)地址手機(jī)是訪問(wèn)不了的

4.數(shù)據(jù)庫(kù)所在的服務(wù)器是否開(kāi)了防火墻,阻止了訪問(wèn)

————————————————

版權(quán)聲明:本文為CSDN博主「shuaiyou_comon」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:

請(qǐng)簡(jiǎn)要描述Android中數(shù)據(jù)庫(kù)操作的一般步驟

這個(gè)建議先把 SqliteOpenHelper 這個(gè)數(shù)據(jù)庫(kù) 操作類 看看 你就懂了

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

創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站建設(shè)公司,網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),1500元定制網(wǎng)站優(yōu)化全包,先排名后付費(fèi),已為上千家服務(wù),聯(lián)系電話:13518219792


當(dāng)前題目:深入了解Android數(shù)據(jù)庫(kù)操作詳解(android數(shù)據(jù)庫(kù)詳解)
URL鏈接:http://m.5511xx.com/article/dhdjgdh.html