SQLiteOpenHelper 简介:
SQLiteOpenHelper是一个借口!所以不能直接实例化!那我们想要得到SQLiteOpenHelper对象就需要实现该接口!创建该接口的实现类对象!
该对象中有如下常用方法:
getReadableDatabase() 打开或创建数据库,返回一个SQLiteDatabase对象;
getWritableDatabase() 打开或创建数据库,返回一个SQLiteDatabase对象;
getReadableDatabase() 与 getWritableDatabase() 它的区别:
使用getReadableDatabase() 获取SQLiteDatabase对象时如果该数据库不可以写入时(如磁盘空间已满)getReadableDatabase()方法返回的SQLiteDatabase对象时只可以读取该数据库中的数据
而方法getReadableDatabase()则会出现异常
abstract void
onCreate(SQLiteDatabase db) |
该方法是第一次创建数据库的时候才会调用!如果程序中已经有该数据库,该方法则不会被再次调用!通常表的初始化会写在该方法中!
abstract void
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) |
该方法是当数据库版本更新的时候会被调用!在创建数据库的时候我们会设置一个数据库的版本!如果该数据库的版本有改动则就会调用该方法!
synchronized void
close() |
该方法关闭数据库!
String | getDatabaseName() |
获取数据库名称!
自定义我们自己的SQLiteOpenHelper
1 public class MySqliteHelper extends SQLiteOpenHelper { 2 private static String My_sql; 3 private Context context; 4 public MySqliteHelper(Context context, String name, CursorFactory factory, 5 int version) { 6 super(context, name, null, version); 7 this.context = context; 8 } 9 10 @Override 11 public void onCreate(SQLiteDatabase db) { 12 My_sql = "CREATE TABLE MYTABLE (_ID INTEGER PRIMARY KEY,_NAME,_AGE,_ADDRESS)"; 13 db.execSQL(My_sql); 14 } 15 16 @Override 17 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 18 Toast.makeText(context, "旧版本:"+oldVersion+",新版本"+newVersion, 0).show(); 19 } 20 21 }
使用MySqliteHelper 操作数据库:
1 public class MainActivity extends Activity implements OnClickListener{ 2 private Button btnQuery,btnUpdate,btnAdd,btnDelete; 3 private MySqliteHelper mySqliteHelper; 4 private int version = 2; 5 private SQLiteDatabase database; 6 private ContentValues contentValues; 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_main); 11 initView(); 12 setEvent(); 13 } 14 15 private void setEvent() { 16 btnQuery.setOnClickListener(this); 17 btnUpdate.setOnClickListener(this); 18 btnAdd.setOnClickListener(this); 19 btnDelete.setOnClickListener(this); 20 } 21 22 private void initView() { 23 btnAdd = (Button) this.findViewById(R.id.id_databaseButtonAdd); 24 btnDelete = (Button) this.findViewById(R.id.id_databaseButtonDelete); 25 btnQuery = (Button) this.findViewById(R.id.id_databaseButtonQuery); 26 btnUpdate = (Button) this.findViewById(R.id.id_databaseButtonUpdate); 27 mySqliteHelper = new MySqliteHelper(this, "MySqlite.db", null, version);//创建数据库 28 database = mySqliteHelper.getReadableDatabase();//打开数据库返回SQLiteDatabase对象 29 contentValues = new ContentValues(); 30 } 31 32 @Override 33 public void onClick(View v) { 34 switch (v.getId()) { 35 case R.id.id_databaseButtonAdd: 36 contentValues.clear(); 37 contentValues.put("_NAME","QQ"); 38 contentValues.put("_AGE","15"); 39 contentValues.put("_ADDRESS","NO"); 40 database.insert("MYTABLE", null, contentValues); 41 break; 42 case R.id.id_databaseButtonQuery: 43 Cursor cursor = database.query("MYTABLE", null, null, null, null, null, null); 44 while (cursor.moveToNext()) { 45 String name =cursor.getString(cursor.getColumnIndex("_NAME")); 46 String id =cursor.getString(cursor.getColumnIndex("_ID")); 47 String age =cursor.getString(cursor.getColumnIndex("_AGE")); 48 String address =cursor.getString(cursor.getColumnIndex("_ADDRESS")); 49 Toast.makeText(this,id+"|"+name+"|"+age+"|"+address, 0).show(); 50 } 51 break; 52 case R.id.id_databaseButtonDelete: 53 //与上一篇同样的操作 54 break; 55 case R.id.id_databaseButtonUpdate: 56 //与上一篇同样的操作 57 break; 58 59 default: 60 break; 61 } 62 } 63 64 }
XML文件:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="fill_parent" 3 android:layout_height="fill_parent" 4 android:orientation="vertical" > 5 6 7 <Button 8 android:id="@+id/id_databaseButtonAdd" 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" 11 android:text="添加数据" /> 12 13 <Button 14 android:id="@+id/id_databaseButtonUpdate" 15 android:layout_width="match_parent" 16 android:layout_height="wrap_content" 17 android:text="修改数据" /> 18 19 <Button 20 android:id="@+id/id_databaseButtonDelete" 21 android:layout_width="match_parent" 22 android:layout_height="wrap_content" 23 android:text="删除数据" /> 24 25 <Button 26 android:id="@+id/id_databaseButtonQuery" 27 android:layout_width="match_parent" 28 android:layout_height="wrap_content" 29 android:text="查询数据" /> 30 </LinearLayout>
时间: 2024-10-20 14:59:41