SQLiteDatabase 基本使用

来源:互联网 发布:苹果笔记本办公软件 编辑:程序博客网 时间:2024/04/29 03:50
SQLiteDatabase使用,手机6.0以上系统要动态注册存储权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

当我们调用SQliteOpenHelper的getReadableDatabase()或getWritableDatabase()的方法可以创建或升级数据库,
这两个方法会返回一个SQLiteDatabase的对象,借助这个对象可以对数据库进行增删改查等操作;
SQLiteDatabase db=MYDatabase(自定义继承的类).getReadableDatabase();//返回db对象
添加数据
SQLiteDatabase中提供一个insert()方法,用于添加数据,
它有三个参数:1要添加的表名,2null,3ContentValuesc的对象
//创建ContentValues对象来组装数据
                ContentValues values=new ContentValues();
                values.put("bookName","天龙八部");
                values.put("author","金庸");
                values.put("price",44.5);
//返回long类型的值,可以在日志中打印输出,判断是否添加成功
//保存数据 返回值为插入的新数据的行号 ,如果为-1 则添加失败
                long myLong2=db.insert("MyBook",null,values);
//在日志中打印添加后返回的值
                Log.d("第二次添加",myLong2+"");
                values.clear();
12-14 22:43:35.250 27566-27566/com.example.sqlifedatabasetest D/第一次添加: 17
12-14 22:43:35.253 27566-27566/com.example.sqlifedatabasetest D/第二次添加: 18


还有一种添加数据方法
SQLiteDatabase db=myDatabase.getWritableDatabase();
        String sql="insert into MyBook (bookName,author,price) values('第一行代码','郭林',79)";
        db.execSQL(sql);


修改数据
update(),用于修改数据
它有四个参数
参数1:要修改的表名
参数2:ContentValues的对象
参数3:相当于SQL语句的where条件部分 //"name=?";?代表点位符
参数4:指定参数3wheret条件部分的具体内容 //既?的具体值

SQLiteDatabase db2=myDatabase.getWritableDatabase();
                ContentValues values2=new ContentValues();
                values2.put("price",30);
                //rows受影响的行数,返回0修改失败
                int rows=db2.update("MyBook",values2,"author=?",new String[]{"金庸"});
//打印修改后的返回值
                Log.d("修改的行数",rows+"");
                values2.clear();
                db2.close();


12-14 22:48:19.803 2360-2360/com.example.sqlifedatabasetest D/修改的行数: 3


删除数据
delete() 有三个参数
参数1:要删除的表名
参数2:指定删除条件
参数3:约束参数2的内容
  SQLiteDatabase db3=myDatabase.getWritableDatabase();
                //value_delete返回的是受影响的行数,返回0删除失败
                int value_delete=db3.delete("MyBook","price>?",new String[]{"33"});
                Log.d("删除后的返回值",value_delete+"");


12-14 23:14:14.289 7608-7608/com.example.sqlifedatabasetest D/删除后的返回值: 15


查询数据
query()可以查询数据
它有7个参数,
参数1:查询的表名
参数2:查询的列名
参数3:指定where的约束条件
参数4:为wherer的点位符提供具体值
参数5:指定group by的列
参数6:对group by的结果进一步约束
参数7:指定查询结果的排序方式
在实际操作中用不上的参数,往往指定为null;调用query()方法它会返回一个游标Cursor对象,
通过操作cursor,可以将数据从这个对象中取出;
Cursor cursor=db.query("MyTable",null,null,null,null,null,null);


关于sql的指针

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);   //返回当前行指定列的值


if(cursor.moveToFisrst()){
while(cursor.moveToNext()){
//通过列名得到下标
int index=cursor.getColumnIndex("列名");
//通过下标得到查询内容
String result=cursor.getString(index);
}
};
cursor.close();