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

10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有本溪免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
一、數(shù)據(jù)庫的創(chuàng)建與升級
SQLite 數(shù)據(jù)庫是 Android 系統(tǒng)中內(nèi)置的一種嵌入式數(shù)據(jù)庫,開發(fā)者可以在應(yīng)用程序中方便地創(chuàng)建和使用它。在使用 SQLite 數(shù)據(jù)庫之前,需要先創(chuàng)建一個數(shù)據(jù)庫。下面是創(chuàng)建數(shù)據(jù)庫的代碼:
“`
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);
}
“`
上面的代碼定義了一個名為“my_db”、版本號為 1 的數(shù)據(jù)庫,通過繼承 SQLiteOpenHelper 實現(xiàn)創(chuàng)建和升級數(shù)據(jù)庫的操作。在創(chuàng)建完數(shù)據(jù)庫之后,就可以在應(yīng)用程序中使用它了。
如果需要升級數(shù)據(jù)庫,可以通過在 onUpgrade() 方法中修改數(shù)據(jù)庫表結(jié)構(gòu)來實現(xiàn)。例如下面的代碼實現(xiàn)了從版本 1 升級到版本 2 并添加了一個新的表:
“`
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ù)庫的版本號是否小于 2,如果是則執(zhí)行創(chuàng)建新表的 SQL 語句。在 Android 中,數(shù)據(jù)庫的升級一般是通過增加版本號來實現(xiàn)的。
二、表的創(chuàng)建與刪除
在創(chuàng)建完數(shù)據(jù)庫之后,下一步就是創(chuàng)建表格??梢酝ㄟ^執(zhí)行 SQL 語句來創(chuàng)建表格,例如下面的代碼創(chuàng)建了一個名為“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)建了一個包含 id 和 name 兩個字段的表格,其中 id 是主鍵并自動遞增。通過類似的語句可以創(chuàng)建具有不同字段和約束條件的表格。
除了創(chuàng)建表格,還可以通過 SQL 語句來刪除表格,例如下面的代碼刪除了名為“my_table”的表格:
“`
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion
db.execSQL(“DROP TABLE IF EXISTS ” + TABLE_NAME);
}
}
“`
在升級數(shù)據(jù)庫的操作中,如果要刪除表格需要先判斷該表格是否存在??赏ㄟ^“DROP TABLE IF EXISTS”語句實現(xiàn)刪除操作。在刪除表格之前,需要把表格中的數(shù)據(jù)備份到其他位置以免數(shù)據(jù)丟失。
三、數(shù)據(jù)的插入與查詢
在創(chuàng)建表格之后,下一步就是對表格進行操作。常見的操作有數(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 對象封裝數(shù)據(jù),然后調(diào)用 insert() 方法向表格中插入該數(shù)據(jù)。insert() 方法返回一個表示新行 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 對象中。從 Cursor 對象中可以逐行提取數(shù)據(jù)并進行處理。
四、
本文深入介紹了 Android 數(shù)據(jù)庫的操作,包括數(shù)據(jù)庫的創(chuàng)建和升級、表格的創(chuàng)建和刪除、數(shù)據(jù)的插入和查詢等。掌握了這些操作之后,開發(fā)者就能夠方便地使用 SQLite 數(shù)據(jù)庫來存儲和管理 App 的數(shù)據(jù)了。當然,實際應(yīng)用場景下,還需要根據(jù)不同的需求進行具體的設(shè)計和實現(xiàn)。
相關(guān)問題拓展閱讀:
- android怎么鏈接數(shù)據(jù)庫mysql
- 請簡要描述Android中數(shù)據(jù)庫操作的一般步驟
android怎么鏈接數(shù)據(jù)庫mysql
有點多請耐心看完。
希望能幫助你,還請及時采納謝謝。
一.前言
android連接數(shù)據(jù)庫的方式有兩種,之一種是通過連接服務(wù)器,再由服務(wù)器讀取數(shù)據(jù)庫來實現(xiàn)數(shù)據(jù)的增刪改查,這也是我們常用的方式。第二種方式是android直接連接數(shù)據(jù)庫,這種方式非常耗手機內(nèi)存,而且容易被
反編譯
造成
安全隱患
,所以在實際項目中不推薦使用。
二.準備工作
1.加載外部jar包
在Android工程中要使用jdbc的話,要導(dǎo)入jdbc的外部jar包,因為在Java的jdk中并沒有jdbc的api,我使用的jar包是mysql-connector-java-5.1.18-bin.jar包,網(wǎng)絡(luò)上有使用mysql-connector-java-5.1.18-bin.jar包的,自己去用的時候發(fā)現(xiàn)不兼容,所以下載了比較新版本的,jar包可以去官網(wǎng)下載,也可以去百度,有很多前人們上傳的。
2.導(dǎo)入jar包的方式
方式一:
可以在項目的build.gradle文件中直接添加如下語句導(dǎo)入
compile files(‘libs/mysql-connector-java-5.1.18-bin.jar’)
方式二:下載jar包復(fù)制到項目的libs目錄下,然后右鍵復(fù)制過來的jar包Add as libs
三.建立數(shù)據(jù)庫連接
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為
端口號
,DBName為數(shù)據(jù)名稱,UserName為數(shù)據(jù)庫登錄賬戶,Password為數(shù)據(jù)庫登錄密碼
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); //測試數(shù)據(jù)庫連接
} 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之后,不允許在主
線程
中進行比較耗時的操作(連接數(shù)據(jù)庫就屬于比較耗時的操作),需要開一個新的線程來處理這種耗時的操作,沒新線程時,一直就是程序直接退出,開了一個新線程處理直接,就沒問題了。
當然,連接數(shù)據(jù)庫是需要網(wǎng)絡(luò)的,千萬別忘了添加訪問網(wǎng)絡(luò)權(quán)限:
四.bu
1.導(dǎo)入的jar包一定要正確
2.連接數(shù)據(jù)庫一定要開啟新線程
3.數(shù)據(jù)庫的IP一定要是可以ping通的,局域網(wǎng)地址手機是訪問不了的
4.數(shù)據(jù)庫所在的服務(wù)器是否開了防火墻,阻止了訪問
————————————————
版權(quán)聲明:本文為CSDN博主「shuaiyou_comon」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:
請簡要描述Android中數(shù)據(jù)庫操作的一般步驟
這個建議先把 SqliteOpenHelper 這個數(shù)據(jù)庫 操作類 看看 你就懂了
關(guān)于android 數(shù)據(jù)庫詳解的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計,網(wǎng)站建設(shè)公司,網(wǎng)站制作,網(wǎng)頁設(shè)計,1500元定制網(wǎng)站優(yōu)化全包,先排名后付費,已為上千家服務(wù),聯(lián)系電話:13518219792
網(wǎng)站題目:深入了解Android數(shù)據(jù)庫操作詳解(android數(shù)據(jù)庫詳解)
分享路徑:http://fisionsoft.com.cn/article/dhdjgdh.html


咨詢
建站咨詢
