日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

浅谈SQLiteOpenHelper之onUpgrade例子

發(fā)布時(shí)間:2023/11/29 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈SQLiteOpenHelper之onUpgrade例子 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

當(dāng)你看到這個(gè)博文,首先你要了解onCreate這個(gè)創(chuàng)建方法,再來(lái)繼續(xù)下文!(可以參考我的上一個(gè)博文http://www.cnblogs.com/896240130Master/p/6119616.html)

這個(gè)onUpgrade類(lèi)要在onCreate類(lèi)的基礎(chǔ)上建立!我們知道onUpgrade是升級(jí)的意思。

看代碼:新建一個(gè)類(lèi)SqlText.java

package com.example.sjk;import android.content.Context; import android.database.sqlite.SQLiteCursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log;public class SqlText extends SQLiteOpenHelper{private static final String DB_NAME = "mydata.db"; //數(shù)據(jù)庫(kù)名稱(chēng)private static final int version =2; // 當(dāng)前數(shù)據(jù)庫(kù)版本號(hào)是升級(jí)到2了public SqlText(Context context) {super(context, DB_NAME, null, version);}@Overridepublic void onCreate(SQLiteDatabase db) { //新安裝的軟件從這里開(kāi)始String sql_message = "create table t_message (id int primary key,name varchar(50),age varchar(50),sex varchar(10))";//升級(jí)的時(shí)候增加了一個(gè)列sex,所以為了和版本2升級(jí)的一樣這里也要對(duì)應(yīng)db.execSQL(sql_message);Log.i("onCreate", "你是新用戶(hù),我們?cè)趲湍銊?chuàng)建表--->成功");String sql_up1 = "insert into t_message values(1,'小白','18','男')";db.execSQL(sql_up1);Log.i("onCreate", "你是新用戶(hù),我們幫你插入一條數(shù)據(jù)-->成功");}@Override//在原來(lái)的軟件上更新會(huì)從這里開(kāi)始,不卸載在線(xiàn)更新public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //本文討論這個(gè)方法if(oldVersion == 1){//如果版本是1.0的,升級(jí)下面的內(nèi)容或修改String sql_upgrade = "alter table t_message add sex varchar(10)";//增加一個(gè)列sex db.execSQL(sql_upgrade);String sql_up2 ="insert into t_message values(3,'小紅','18','男')";db.execSQL(sql_up2);Log.i("onUpgrade","你在沒(méi)有卸載的情況下,在線(xiàn)更新了版本2.0,同時(shí)列表增加了一個(gè)列sex"); }}}

?

在MainActivity.java 顯示

package com.example.sjk; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.TextView;public class MainActivity extends Activity {private SqlText st; //得到SqlText這個(gè)類(lèi)的contextprivate TextView tv; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) findViewById(R.id.TextView);//找到這個(gè)TextView組件st = new SqlText(MainActivity.this);String text = query();//調(diào)用查詢(xún)這個(gè)方法tv.setText("id \t"+"name\t"+"age\t"+"sex\n"+text+"\n");//顯示}public String query(){//查詢(xún)數(shù)據(jù)庫(kù)的數(shù)據(jù)String result = "";//獲取數(shù)據(jù)庫(kù)對(duì)象SQLiteDatabase db = st.getReadableDatabase();//只讀:ReadableDatabase;讀寫(xiě):WritableDatabase//查詢(xún)數(shù)據(jù)庫(kù)中的數(shù)據(jù)Cursor cursor = db.query("t_message", null, null, null, null, null, null);//結(jié)果集for(int i=0;i<cursor.getCount();i++) {cursor.moveToNext();result += cursor.getInt(cursor.getColumnIndex("id"));result += cursor.getString(cursor.getColumnIndex("name"));result += cursor.getString(cursor.getColumnIndex("age")); result += cursor.getString(cursor.getColumnIndex("sex")); }cursor.close();//關(guān)閉結(jié)果集db.close();//關(guān)閉數(shù)據(jù)庫(kù)對(duì)象return result;}}

  

現(xiàn)在我們?cè)诎姹咎?hào)1上,安裝這個(gè)新的版本2。也就是說(shuō)也就是說(shuō)不卸載版本1,直接覆蓋版本2看下圖

更新了版本,并且增加了一個(gè)列

?

?

我們插入的是一條數(shù)據(jù),為什么是兩條呢,是因?yàn)槲覀冊(cè)诎姹?.0的時(shí)候就已經(jīng)有了一條數(shù)據(jù),后面sex在1.0的時(shí)候沒(méi)有所以是null,

?

我們?cè)賮?lái)第2次測(cè)試,卸載安裝的。重新安裝看看還是原來(lái)的數(shù)據(jù)或者執(zhí)行的是onCreate方法還是onUpgrade 方法?

?

結(jié)果:

?

?顯示:

我們的出一個(gè)結(jié)論:

當(dāng)你Android安裝一個(gè)全新的應(yīng)用,會(huì)從onCreate這個(gè)方法里創(chuàng)建。

當(dāng)你Android在舊版本上更新的時(shí)候會(huì)從onUpgrade方法里更新。

?

轉(zhuǎn)載于:https://www.cnblogs.com/896240130Master/p/6128557.html

總結(jié)

以上是生活随笔為你收集整理的浅谈SQLiteOpenHelper之onUpgrade例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。