使用SQLite数据库

作者: dayang | 来源:发表于2016-12-07 21:49 被阅读53次
    一、使用SQLiteOpenHelper类需要以下几个类

    可以用JDBC相关数据库操作类进行类比

    • SQLiteOpenHelper--创建打开连接数据库;
    • SQLiteDatabase--PreparedStatement,通过这个类进行数据库的增删改查;
    • Cursor--ResultSet,查询时返回的数据集,根据这个类遍历查询结果;
    • ContentValue类,包装了HashMap类,该类用于存储键-值对的数据
      每个键-值对数据表示相应表中的列名和该列的数据
      键-->列名
      值-->列值
    二、继承SQLiteOpenHelper类,打开创建数据库
    class MyDatabaseHelp extends SQLiteOpenHelper{
            public MyDatabaseHelp(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
                super(context, name, factory, version);
            }
            @Override
            public void onCreate(SQLiteDatabase sqLiteDatabase) {
                String sql="create table person(id integer primary key autoincrement," +
                        "name varchar(20)," +
                        "age integer)";
                sqLiteDatabase.execSQL(sql);
                Log.i("dayang","onCreate----------");
            }
            @Override
            public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
                String sql="create table person(id integer primary key autoincrement," +
                        "name varchar(20)" +
                        "age integer)";
                sqLiteDatabase.execSQL(sql);
            }
        }
    
    在创建SQLiteDatabase类时,会创建数据库
    MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
    SQLiteDatabase db=help.getReadableDatabase();
    
    三、使用SQLiteDatabase类操作数据库

    可以使用SQLiteDatabase类的execSQL(String sql)方法来执行sql语句

    1.查询

    也可以使用SQLiteDatabase类rawQuery()方法代替下面的查询

    String sql ="select * from person";
    db.rawQuery(sql,null);
    
    MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
    SQLiteDatabase db=help.getWritableDatabase();
    Cursor cursor=db.query("person",null,null,null,null,null,null);
    while(cursor.moveToNext()){
        Log.i("dayang","id="+cursor.getString(cursor.getColumnIndex("id")));
        Log.i("dayang","name="+cursor.getString(cursor.getColumnIndex("name")));
        Log.i("dayang","age"+cursor.getString(cursor.getColumnIndex("age")));
    }
    
    2.插入

    ContentValue类保存要插入的数据
    相应的sql语句

    insert into student(name,age) values('zhaoran','27');

     MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
     SQLiteDatabase db=help.getWritableDatabase();
     ContentValues values=new ContentValues();
     values.put("name","zhaoran");//name对应person表中的name列
     values.put("age",27);//age对应person表中的age列
     long i= db.insert("person",null,values);//返回的是插入数据的位置
     Log.i("dayang","插入的位置"+i);
    
    3.更新
     MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
     SQLiteDatabase db=help.getWritableDatabase();
     ContentValues values=new ContentValues();
     values.put("name","dayu");
     int n=db.update("person",values,"id=?",new String[]{"3"});
     Log.i("dayang","返回影响数据行数:"+n);
    
    4.删除
    MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
    SQLiteDatabase db=help.getWritableDatabase();
    int n=db.delete("person","id=?",new String[]{"6"});
    Log.i("dayang","影响的行数"+n);
    

    相关文章

      网友评论

        本文标题:使用SQLite数据库

        本文链接:https://www.haomeiwen.com/subject/hmqrmttx.html