• Android SQLite用法


    1、创建SQLite数据库

    需要自己创建一个类来继承SQLiteOpenHelper类

    SQLiteOpenHelper类是一个创建SQLite数据库的辅助类

    继承此类的时候需要重写三个方法

    public dbHelper(Context context, String name, CursorFactory factory,
    int version) {
    super(context, name, factory, version);

    //此方法在实例化此辅助类的时候,传入相应的参数便可以自动创建数据库

    //Context 上下文对象

    //String   数据库名称

    //CursorFactory 游标工厂,可以不填

    // version   数据库版本号,更新时使用
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    //db.execSQL("create table Book(_id integer primary key," + "_name text,"
    //+ "_password text)");
    //Log.i("TAG", "名称为Book的表创建完成");

    //此方法在数据库创建的同时执行,建表操作放在此处便可以避免表明重复而造成的程序崩溃

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    //数据库升级时使用

    }

    2、数据库的增、删、改、查

      

     在需要创建数据库的类中实例化辅助类,并且获取SQLiteDatabases 对象

      1、

      dbHelper dbh;//外围定义句柄值

      public SQLiteDatabase getDatabases() {//创建一个方法,用来获取SQLiteDatabases对象

      dbh = new dbHelper(MainActivity.this, "book.db", null, 1);//传入数据

                                   //上下文对象,表名称,游标工厂,数据库版本号

      Log.i("TAG", "名称为book.db的数据库创建完成");//提示

      return dbh.getWritableDatabase();//返回可写的SQLiteDatabases

      }

      2  

      获取SQLiteDatabases句柄值

      SQLiteDatabase db = getDatabases();//获取控制数据

      

    添加数据  

      ContentValues cv = new ContentValues();
      cv.put("_name", "liujunfei");
      cv.put("_password", "zheshimima");
      db.insert("Book", null, cv);

      //insert方法参数

      //第一个参数:需要插入的表名称

      //第二个参数:可以置空(暂时不知道)

      //第三个参数:ContentValues 需要插入数据的键值对

      Log.i("TAG", "数据插入完成");

    删除数据

      db.execSQL("delete from Book where _id=2");//通过ID删除数据 必须是primary key  不然报错

       Log.i("TAG", "数据删除成功" );

    查询数据

      

      Cursor cursor = db.rawQuery("select*from Book", null);//选择表
      while (cursor.moveToNext()) {//遍历数据
      String name = cursor.getString(cursor
      .getColumnIndex("_name"));//获取列名_name下的所有数据
      Log.i("TAG", "查询到的用户: " + name);
      Message msg = Message.obtain();
      msg.what = 1;
      msg.obj = name;
      handler.sendMessage(msg);//通过handler发送数据
      }

      Handler handler = new Handler() {
      public void handleMessage(android.os.Message msg) {
      switch (msg.what) {
      case 1:
      String result = (String) msg.obj;//获取到发送过来的数据
      list_user_name.add(result);//将发送过来的数据添加到ArrayList中
      lv.setAdapter(new ArrayAdapter<String>(MainActivity.this,
      android.R.layout.simple_list_item_1, list_user_name));
      break;

      }
      };
     };

    查询特定的数据

      Cursor cursor = db.rawQuery(
      "select*from Book where _name =? and _password=?",
      new String[] { "liujunfei", "zheshimima" });//在此处填写需要查询的数据
      while (cursor.moveToNext()) {
      String name = cursor.getString(cursor
      .getColumnIndex("_name"));
      Log.i("TAG", "查询到的用户: " + name);
      }

  • 相关阅读:
    cocos2d-x系列笔记技巧篇(2)---关于CREATE_FUNC宏的用法
    Cocos2d-x开源、跨平台的游戏引擎
    Asp.Net Core 文件上传处理
    Asp.Net Core获取当前上下文对象
    Asp.Net Core 视图整理(一)
    SVG渲染顺序及z轴显示问题(zIndex)
    JavaScript Screen对象
    Javascript 对象(object)合并
    SVG.Js事件示例,简单绑定拖动操作
    SVG 文字居中整理
  • 原文地址:https://www.cnblogs.com/MainActivity/p/6011215.html
Copyright © 2020-2023  润新知