SQLiteOpenHelper的简单使用

66 篇文章 0 订阅

由于想学习GreenDao框架,但是看了一下有的蒙圈,所以先熟悉一下android原生的SQLiteOpenHelper的使用工具:SQLite Expert Personal SQLite Expert Personal可以很直观的验证程序代码的正确性查看方式  然后找到 data -> data ->自己的项目报名-> *.db  然后导出来在用SQLite Expert Personal 就可以查看了SQLiteOpenHelper的使用首先创建一个继承在SQLiteOpenHelper的类,并重写onCreate()和onUpgrade()方法。程序运行先检测有没有这个数据库 如果没有调用 onCreate() 创建  onCreate()   创建表  onUpgrade  更新数据表的版本public static final String TAG = "database";     private static final String DATABASE_NAME = "test.db";//数据库名字    private static final int DATABASE_VERSION = 1;//数据库版本号    private static final String TABLE_BOOK_NAME = "book";     public String getTableName() {        return TABLE_BOOK_NAME;    }     private static final String CREATE_BOOK_TABLE = "create table " + TABLE_BOOK_NAME + " ("            + "id integer primary key autoincrement,"            + "book_name text, "            + "author text, "            + "price integer)";//创建数据库里的表的sql语句      public BookSQLOpenHelper(Context context) {        this(context, DATABASE_NAME, null, DATABASE_VERSION);    }     public BookSQLOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super(context, name, factory, version);     }     @Override    public void onCreate(SQLiteDatabase db) {        Log.i(TAG, "onCreate");        db.execSQL(CREATE_BOOK_TABLE);    }     @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//        String sql = "alter table person add sex varchar(8)";//        db.execSQL(sql);        String sql = "DROP TABLE IF EXISTS " + DATABASE_NAME;        db.execSQL(sql);        onCreate(db);    }代码log然后实现写外部接口类 BookDao 去封装增删改查   插入方法public void add() {        SQLiteDatabase db = helper.getWritableDatabase();        db.execSQL("insert into " + TABLE_NAME + " ( book_name, author, price) values ( '解忧杂货店', '东野圭吾', 10)");        db.execSQL("insert into " + TABLE_NAME + " ( book_name, author, price) values ('白夜行', '东野圭吾', 11)");        db.execSQL("insert into " + TABLE_NAME + " ( book_name, author, price) values ( 'x嫌疑人的替身', '东野圭吾', 12)");    }修改方法 public void update() {        SQLiteDatabase db = helper.getWritableDatabase();        ContentValues values = new ContentValues();        values.put("book_name", "怪人1");        values.put("author", "东野圭吾");        values.put("price", 15);        db.update(TABLE_NAME, values, "book_name = ?", new String[]{"怪人"});    }删除方法 public void delete() {        SQLiteDatabase db = helper.getWritableDatabase();        db.delete(TABLE_NAME, "id=?", new String[]{"2"});    }查询方法public void query() {        SQLiteDatabase db = helper.getWritableDatabase();        Cursor query = db.query(TABLE_NAME, this.query, "author = ?", new String[]{"东野圭吾"}, null, null, null);        query.isFirst();        int count = query.getCount();        Log.e(TAG, "getCount  " + count);         while (query.moveToNext()) {            int bookNameIndex = query.getColumnIndex("book_name");            int authorIndex = query.getColumnIndex("author");            int priceIndex = query.getColumnIndex("price");            Log.e(TAG, "  getColumnIndex   : " + bookNameIndex + " , " + authorIndex + " , " + priceIndex);             String bookName = query.getString(0);            String author = query.getString(1);            String price = query.getString(2);             StringBuilder sb = new StringBuilder();            sb.append(bookName).append("  ").append(author).append("  ").append(price);            Log.e(TAG, "getColumnName  " + sb.toString());        }    }//Cursor对象常用方法如下:        c.move(int offset); //以当前位置为参考,移动到指定行          c.moveToFirst();    //移动到第一行          c.moveToLast();     //移动到最后一行          c.moveToPosition(int position); //移动到指定行          c.moveToPrevious(); //移动到前一行          c.moveToNext();     //移动到下一行          c.isFirst();        //是否指向第一条          c.isLast();     //是否指向最后一条          c.isBeforeFirst();  //是否指向第一条之前          c.isAfterLast();    //是否指向最后一条之后          c.isNull(int columnIndex);  //指定列是否为空(列基数为0)          c.isClosed();       //游标是否已关闭          c.getCount();       //总数据项数          c.getPosition();    //返回当前游标所指向的行数          c.getColumnIndex(String columnName);//返回某列名对应的列索引值          c.getString(int columnIndex);   //返回当前行指定列的值  
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值