zoukankan      html  css  js  c++  java
  • android SQLite使用SQLiteOpenHelper类对数据库进行操作 from http://blog.csdn.net/draling/article/details/6569237

    SQLiteOpenHelper的使用方法 
    SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。 
    可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。 
    所有继承了这个类的类都必须实现下面这样的一个构造方法: 
    public DatabaseHelper(Context context, String name, CursorFactory factory, int version) 
    第一个参数:Context类型,上下文对象。 
    第二个参数:String类型,数据库的名称 
    第三个参数:CursorFactory类型 
    第四个参数:int类型,数据库版本 
    下面是这个类的几个方法: 

    方法名 返回类型 描述 备注 
    getReadableDatabase() synchronized SQLiteDatabase 创建或打开一个数据库 可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作,如新建一个表,插入一条数据等 
    getWritableDatabase() synchronized SQLiteDatabase 创建或打开一个可以读写的数据库 
    onCreate(SQLiteDatabase db) abstract void 第一次创建的时候调用 
    onOpen(SQLiteDatabase db) void 打开数据库 
    onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) abstract void 升级数据库 
    close() synchronized void 关闭所有打开的数据库对象

    例子:
    DatabaseHelper类:

    package qyq.sqlitetest.db;

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    /** 
     * SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本他,它提供两个方面的功能  
     * 第一,getReadableDatabase()、getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作  
     * 第二,提供了onCreate()、onUpgrade()两个回调函数,允许我们再创建和升级数据库时,进行自己的操作  
     */
    public class DatabaseHelper extends SQLiteOpenHelper{
     private static final int VERSION = 1;
     /** 构造方法,这个构造方法在SQLiteOpenHelper的实现类当中是必须的
     * @param context   上下文对象  这里的话也就是Activity了
        * @param name      数据库名称  
        * @param factory  
        * @param version   当前数据库的版本,值必须是整数并且是递增的状态 
        */
     public DatabaseHelper(Context context, String name, CursorFactory factory,
       int version) {
      //必须通过super调用父类当中的构造函数
      super(context, name, factory, version);
     }
     // 构造方法
     public DatabaseHelper(Context context, String name, int version) {
      this(context, name, null,version);
     }
     // 构造方法
     public DatabaseHelper(Context context, String name) {
      this(context, name,VERSION);
     }
     // 创建或打开一个可以只读的数据库,返回 SQLiteDatabase对象
     @Override
     public synchronized SQLiteDatabase getReadableDatabase() {
      // TODO Auto-generated method stub
      return super.getReadableDatabase();
     }
     // 创建或打开一个可以读写的数据库,返回 SQLiteDatabase对象
     @Override
     public synchronized SQLiteDatabase getWritableDatabase() {
      // TODO Auto-generated method stub
      return super.getWritableDatabase();
     }
     // 第一次创建数据库时候执行,第一次得到SQLiteOpenHelper对象的时候,才会调用这个方法
     @Override
     public void onCreate(SQLiteDatabase db) {
      // TODO Auto-generated method stub
      System.out.println("onCreate method");
      //execSQL用于执行SQL语句,创建数据库表
      db.execSQL("create table users (id int,name varchar(50))");
      
     }

     @Override
     public void onOpen(SQLiteDatabase db) {
      // TODO Auto-generated method stub
      System.out.println("onOpen method");
      super.onOpen(db);
     }

     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      System.out.println("onUpgrade method");
      
     }

    Activity类

    package qyq.sqlitetest;

    import qyq.sqlitetest.db.DatabaseHelper;
    import android.app.Activity;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;

    public class sqLiteTestActivity extends Activity {
        /** Called when the activity is first created. */
     // 控件的声明
     private Button createDataBase = null;
     private Button updateDataBase = null;
     private Button insert = null;
     private Button update = null;
     private Button query = null;
     private Button delete =null;
     private EditText id = null;
     private EditText name = null;
     private int inputid = 0;
     private String inputname = null;
     // 获取控件设置OnClickListener监听器
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            createDataBase = (Button)findViewById(R.id.createDataBase);
            createDataBase.setOnClickListener(new createDataBaseListener());
            updateDataBase=(Button)findViewById(R.id.updateDataBase);
            updateDataBase.setOnClickListener(new updateDataBaseListener());
            id =(EditText)findViewById(R.id.id);
            name = (EditText)findViewById(R.id.name);
            insert = (Button)findViewById(R.id.insert);
            insert.setOnClickListener(new insertListener());
            update =(Button)findViewById(R.id.update);
            update.setOnClickListener(new updateListener());
            query=(Button)findViewById(R.id.query);
            query.setOnClickListener(new queryListener());
            delete =(Button)findViewById(R.id.delete);
            delete.setOnClickListener(new deleteListener());
            System.out.println("test");
        }
        // 监听器类
        class createDataBaseListener implements OnClickListener{

      @Override
      public void onClick(View v) {
       // 创建了一个DatabaseHelper对象,只执行这句话是不会创建或打开连接的 
       DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
        // 只有调用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法之后,才会创建或打开一个连接
       SQLiteDatabase db = helper.getReadableDatabase();
      }
        }
        // 监听器类
        class updateDataBaseListener implements OnClickListener{

      @Override
      public void onClick(View v) {
       DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test",2);
       SQLiteDatabase db = helper.getWritableDatabase();
      }
        }
        // 监听器类
        class insertListener implements OnClickListener{

      @Override
      public void onClick(View v) {
       // 创建ContentValues对象 
       ContentValues values = new ContentValues();
       // 向该对象中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致   
       //Integer.parseInt(id.getText().toString())从画面获取要插入的值
       values.put("id",Integer.parseInt(id.getText().toString()));
       values.put("name", name.getText().toString());
       // 创建DatabaseHelper对象
       DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
       // 得到一个可写的SQLiteDatabase对象
       SQLiteDatabase db = helper.getWritableDatabase();
       // 调用insert方法,就可以将数据插入到数据库当中   
                // 第一个参数:表名称   
                // 第二个参数:SQl不允许一个空列,如果ContentValues是空的,那么这一列被明确的指明为NULL值   
                // 第三个参数:ContentValues对象 
       db.insert("users", null, values);  
      }
        }
        // 监听器类
        class updateListener implements OnClickListener{

      @Override
      public void onClick(View v) {
       ContentValues values = new ContentValues();
       values.put("name", "lisiyuan");
       DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
       SQLiteDatabase db = helper.getWritableDatabase();
       String id1 =id.getText().toString();
       // 调用update方法   
                // 第一个参数String:表名   
                // 第二个参数ContentValues:ContentValues对象   
                // 第三个参数String:where字句,相当于sql语句where后面的语句,?号是占位符   
                // 第四个参数String[]:占位符的值 
       db.update("users", values, "id=?", new String[]{id1});
      }
        }
        // 监听器类
        class queryListener implements OnClickListener{

      @Override
      public void onClick(View v) {
       DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
       SQLiteDatabase db = helper.getReadableDatabase();
       // 调用SQLiteDatabase对象的query方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象   
                // 第一个参数String:表名   
                // 第二个参数String[]:要查询的列名   
                // 第三个参数String:查询条件   
                // 第四个参数String[]:查询条件的参数   
                // 第五个参数String:对查询的结果进行分组   
                // 第六个参数String:对分组的结果进行限制   
                // 第七个参数String:对查询的结果进行排序
       Cursor cs=db.query("users", new String[]{"id","name"}, "id=?", new String[]{"5"}, null, null, null);
       // 将光标移动到下一行,从而判断该结果集是否还有下一条数据,如果有则返回true,没有则返回false   
       while(cs.moveToNext()){
        System.out.println(cs.getString(cs.getColumnIndex("name")));
       }
      }
        }
        // 监听器类
        class deleteListener implements OnClickListener{

      @Override
      public void onClick(View v) {
       DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
       SQLiteDatabase db = helper.getWritableDatabase();
       String id1 =id.getText().toString();
       //调用SQLiteDatabase对象的delete方法进行删除操作   
                //第一个参数String:表名   
                //第二个参数String:where字句,相当于sql语句where后面的语句,?号是占位符   
                //第三个参数String[]:占位符的值 
       db.delete("users", "id=?", new String[]{id1});
      }
        }
    }

     
    }

  • 相关阅读:
    怎么在Vue项目中使用Element组件
    vue-cli 基本使用
    C++ delete指针以后应赋值为NULL
    C++ noexcept异常说明及其使用
    Qt 设置comboBox里面的字体颜色
    Qt 获取可用串口
    Qt 寻找可用串口
    荧光显微镜简介
    荧光滤光片简介
    消色差、半复消色差、复消色差的区别
  • 原文地址:https://www.cnblogs.com/songtzu/p/2835458.html
Copyright © 2011-2022 走看看