• Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用


    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>
  • 相关阅读:
    jQuery的版本兼容问题
    web页面锁屏初级尝试
    mvc5之文件上传
    魔方基础入门教程
    XCube和X组件的入门级使用教程
    蔬菜大棚监控与管理 1.0版本(未完善)
    蔬菜大棚 数据库设计 0.5版本()
    记录一段存储过程
    MPU9250九轴陀螺仪--读接口数据
    MPU9250九轴陀螺仪--连接MPU9250
  • 原文地址:https://www.cnblogs.com/shiguotao-com/p/5165789.html
Copyright © 2020-2023  润新知