本文共 6646 字,大约阅读时间需要 22 分钟。
執行順序為
MyContentProvider: onCreate:
MyDBHlper: onUpgrade: oldVersion:1newVersion:2
MyDBHlper: onCreate:
public class MyContentProvider extends ContentProvider { @Override public boolean onCreate() { Log.d(Tag, "onCreate: "); // MyDBHlper dbHper = new MyDBHlper(getContext(), DBname, null, 1); //FIXME:test version change MyDBHlper dbHper = new MyDBHlper(getContext(), DBname, null, 2); MyDB = dbHper.getWritableDatabase(); return true; }}public class MyDBHlper extends SQLiteOpenHelper { @Override public void onCreate(SQLiteDatabase db) { Log.d(Tag, "onCreate: "); db.execSQL(crTBsql); db.execSQL(initDBDate); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.d(Tag, "onUpgrade: oldVersion:" + oldVersion + "newVersion:" + newVersion); db.execSQL("DROP TABLE IF EXISTS " + TBname); onCreate(db); }}
***************************************************************************************************
轉載自
File Name:MainActivity
import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnNew, btnDel, btnAlt; private EditText edtID, edtRow1, edtRow2; private TextView txt; private MyHelper helper; private SQLiteDatabase db; private Cursor c; private String result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnNew = (Button) this.findViewById(R.id.btn_new); btnDel = (Button) this.findViewById(R.id.btn_delete); btnAlt = (Button) this.findViewById(R.id.btn_alter); edtID = (EditText) this.findViewById(R.id.edt1); edtRow1 = (EditText) this.findViewById(R.id.edt2); edtRow2 = (EditText) this.findViewById(R.id.edt3); txt = (TextView) this.findViewById(R.id.txt); btnNew.setOnClickListener(this); btnDel.setOnClickListener(this); btnAlt.setOnClickListener(this); helper = new MyHelper(this, "dbname", null, 1); db = helper.getWritableDatabase(); queryDB(); } private void queryDB() { c = db.query("tablename", null, null, null, null, null, null); result=""; for(int i=0; i
File Name:MyHelper
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MyHelper extends SQLiteOpenHelper { private String createTab; private String tableName = "tablename"; public MyHelper(Context context, String db_name, SQLiteDatabase.CursorFactory factory, int db_version) { super(context, db_name, factory, db_version); } @Override public void onCreate(SQLiteDatabase db) { createTab = "create table "+ tableName +" (_id integer primary key AUTOINCREMENT, row1 text, row2 text)"; db.execSQL(createTab); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}
在用戶新增完資料後,就會變成下面這樣。
import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnNew, btnDel, btnAlt; private EditText edtID, edtRow1, edtRow2; private TextView txt; private MyHelper helper; private SQLiteDatabase db; private Cursor c; private String result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnNew = (Button) this.findViewById(R.id.btn_new); btnDel = (Button) this.findViewById(R.id.btn_delete); btnAlt = (Button) this.findViewById(R.id.btn_alter); edtID = (EditText) this.findViewById(R.id.edt1); edtRow1 = (EditText) this.findViewById(R.id.edt2); edtRow2 = (EditText) this.findViewById(R.id.edt3); txt = (TextView) this.findViewById(R.id.txt); btnNew.setOnClickListener(this); btnDel.setOnClickListener(this); btnAlt.setOnClickListener(this); helper = new MyHelper(this, "dbname", null, 2); db = helper.getWritableDatabase(); queryDB(); } private void queryDB() { c = db.query("tablename", null, null, null, null, null, null); result=""; for(int i=0; i
File Name:MyHelper
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MyHelper extends SQLiteOpenHelper { private String createTab; private String tableName = "tablename"; public MyHelper(Context context, String db_name, SQLiteDatabase.CursorFactory factory, int db_version) { super(context, db_name, factory, db_version); } @Override public void onCreate(SQLiteDatabase db) { createTab = "create table "+ tableName + " (_id integer primary key AUTOINCREMENT, row1 text, row2 text, row3 text)"; db.execSQL(createTab); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if(oldVersion == 1 && newVersion == 2){ //Adding a row3 String sql = "alter table "+ tableName +" add row3 text"; db.execSQL(sql); } }}
實作後,則會變成下面這樣。有發現差異在哪嗎?
改版後的App不但保存了用戶的舊資料,同時還新增了一個row3的欄位,是不是很方便的一個功能呀!
转载地址:http://agsgi.baihongyu.com/