时间:2021-07-01 10:21:17 帮助过:37人阅读
在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这个类的context
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.TextView);//找到这个TextView组件
st = new SqlText(MainActivity.this);
String text = query();//调用查询这个方法
tv.setText("id \t"+"name\t"+"age\t"+"sex\n"+text+"\n");//显示
}
public String query(){//查询数据库的数据
String result = "";
//获取数据库对象
SQLiteDatabase db = st.getReadableDatabase();//只读:ReadableDatabase;读写:WritableDatabase
//查询数据库中的数据
Cursor cursor = db.query("t_message", null, null, null, null, null, null);
//结果集
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();//关闭结果集
db.close();//关闭数据库对象
return result;
}
}
现在我们在版本号1上,安装这个新的版本2。也就是说也就是说不卸载版本1,直接覆盖版本2看下图

更新了版本,并且增加了一个列

我们插入的是一条数据,为什么是两条呢,是因为我们在版本1.0的时候就已经有了一条数据,后面sex在1.0的时候没有所以是null,
我们再来第2次测试,卸载安装的。重新安装看看还是原来的数据或者执行的是onCreate方法还是onUpgrade 方法?
结果:

显示:

我们的出一个结论:
当你Android安装一个全新的应用,会从onCreate这个方法里创建。
当你Android在旧版本上更新的时候会从onUpgrade方法里更新。
浅谈SQLiteOpenHelper之onUpgrade例子
标签:exec title char layout tar key port 例子 count