zoukankan      html  css  js  c++  java
  • SQLite关系型数据库

      SQLiteOpenHelper的使用:

          首先声明一个DatabaseHelper类,这个类继承于SQLiteOpenHelper类,首先得有构造函数,声明DatabaseHelper类如下:

        //DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能
        //第一,getReadableDatabase(),getWriteableDatabase()可以获得SQLiteDatabase对象,通过该对象对数据库进行操作
        //第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作
        public class DatabaseHelper extends SQLiteOpenHelper{
          //在SQLiteOpenHelper的子类当中,必须有该构造函数
          //context为一个Activity对象,name表的名字,version数据库的版本
          private static final int VERSION = 1;
          public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {
            super(context, name, factory, version);
            // TODO Auto-generated constructor stub
          }
          public DatabaseHelper(Context context,String name){
            //调用含三个参数的构造函数,即下一个自定义的构造函数
            this(context,name,VERSION);
          }
          public DatabaseHelper(Context context,String name,int version){
            //调用系统的构造函数,只不过给factory传入的值为空
            this(context,name,null,version);
          }
          //该函数是在第一次创建数据库的时候执行,实际上是第一次得到SQLiteDatabase对象的时候,才会调用该方法
          @Override
          public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            //execSQL函数用于执行SQL语句
            db.execSQL("create table user(id int,name varchar(20))");
            //Log.d("myDebug", "My first Debug");
          }

          @Override
          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
          }

        }

      如下定义了增删改查SQLite数据库的按钮的监听事件:

        class SQLButtonListener implements OnClickListener{

          @Override
          public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v.getId() == R.id.createDatabase){
              //创建数据库,首次调用则执行onCreate方法
              DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db");
              SQLiteDatabase db = dbHelper.getReadableDatabase();
            }
            else if(v.getId() == R.id.updataDatabase){
              //更新当前数据库的版本号
              DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
            }
            else if(v.getId() == R.id.insertDatabase){    //插入按钮
              //生成ContentValue对象
              ContentValues values = new ContentValues();
              //向该对象中插入键值对,其中键是列名,值是希望插入的这一列的值,值必须与数据库的列的类型一致
              values.put("id", 1);
              values.put("name", "zhangsan");
              DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
              SQLiteDatabase db = dbHelper.getWritableDatabase();
              //调用insert方法,就可以将数据插入到数据库当中
              db.insert("user", null, values);
            }
            else if(v.getId() == R.id.updatatable){    //更新按钮
              //UPDATE table_name set XXCOL=xxx WHERE XXCOL=XX
              DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
              SQLiteDatabase db = dbHelper.getWritableDatabase();
              ContentValues values = new ContentValues();
              values.put("name", "zhangsanfeng");
              //第一个参数是更新的表名,第二个参数是一个ContentValues对象,第三个参数是where子句,?表示占位符,?有几个后面             的new String中就有几个参数
              db.update("user", values, "id=?", new String[]{("1")});
            }
            else if(v.getId() ==R.id.queryDatabase){      //查询按钮
              DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
              SQLiteDatabase db = dbHelper.getReadableDatabase();

              //表名,查询列名,where之后的子句,selection的参数,分组(groupby),分组的限制(Having),结果的排序(OrderBy)
              Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
              while(cursor.moveToNext()){
                //getString(1)中的参数是表中的列名
                String name = cursor.getString(cursor.getColumnIndex("name"));
                textView.setText(textView.getText()+name);
              }
            }
          }
        }

  • 相关阅读:
    【转载】WinCE编译一二三
    Implement the OEM Power Management on Windows CE
    ubuntu 精简系统
    simple awk tutorial
    debian 安装备份已安装软件包
    awk 简单教程
    Unix Sed Tutorial: Advanced Sed Substitution Examples
    dos修改子文件夹所有文件文件名
    Using Intel MKL with MATLAB Matlab使用多核CPU
    [转]学校的统一订书80%该烧掉——IT推荐书单
  • 原文地址:https://www.cnblogs.com/zhanglei93/p/4659854.html
Copyright © 2011-2022 走看看