Android day_05 (数据库的使用)

使用dos查看数据库:

1)创建数据库:

//创建一个类继承SQLiteOpenHelper
public class MyOpenHelper extends SQLiteOpenHelper {
    //父类中没有空参的构造方法  必须重写  第一个参数上下文  第二个数据库名  第三个默认用null就可以  第四个为数据库版本 必须大于一
    public MyOpenHelper(Context context) {
        super(context,"tlb.db", null,1);
    }
//实例化 继承了SQLiteOpenHelper的MyOpenHelper 
 MyOpenHelper myOpenHelper=new MyOpenHelper(getApplicationContext());//getApplicationContext()快速拿到上下文
//获取数据库  创建或者打开数据库  第一次是创建
  SQLiteDatabase sqLiteDatabase1=myOpenHelper.getWritableDatabase();
// 获取数据库  创建或者打开数据库  第一次是创建 和getWritableDatabase()的区别为磁盘满时返回的数据库为只读
        SQLiteDatabase sqLiteDatabase=myOpenHelper.getReadableDatabase();

2)类创建时继承SQLiteOpenHelper类的onCreate(SQLiteDatabase db)方法和onUpgrade(SQLiteDatabase db, int i, int i1)方法

//第一次创建数据库时调用此方法 因此适合做数据表结构的初始化
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//.execSQL() 执行sql语句()内些sql语句
        sqLiteDatabase.execSQL("create table info(_id integer primary key autoincrement,name varchar(20))");
    }
//数据库升级调用此方法 适合做表结构的更新
 public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        sqLiteDatabase.execSQL("alter table info add phone varchar(20)");
    }

 2)用代谷歌api和码执行sql语句的增删查改

  //增
    public void click1(View v){
        //获取数据库
        SQLiteDatabase sqLiteDatabase=myOpenHelper.getWritableDatabase();
        //执行增加的sql语句
        //sqLiteDatabase.execSQL("insert into info (name,phone) values(?,?)",new Object[]{"张三","137777"});
        /*
        *第一个参数table 为表名 第二个写null 第三个参数为 ContentValues内部封装了一个Map key为对应列的名字values为对应值
        * */
//使用谷歌api
        ContentValues contentValues=new ContentValues();
        contentValues.put("name","张三");
        contentValues.put("phone","110");
        //返回值为新行的id
        Long l=sqLiteDatabase.insert("info",null,contentValues);
        if (l>0){
            Toast.makeText(getApplicationContext(),"添加成功",Toast.LENGTH_LONG).show();
        }else{
            Toast.makeText(getApplicationContext(),"添加失败",Toast.LENGTH_LONG).show();
        }

        sqLiteDatabase.close();
    }
    //删
    public void click2(View v){
        //获取数据库
        SQLiteDatabase sqLiteDatabase=myOpenHelper.getWritableDatabase();
        //执行删除的sql语句
        //sqLiteDatabase.execSQL("delete from info where name='张三'");
//使用谷歌api
        //第一个参数 table 表名  第二个whereClause 为条件相当于where 第三个为条件的值
        int del=sqLiteDatabase.delete("info","name=?",new String[]{"张三"});
        Toast.makeText(getApplicationContext(),"删除了"+del+"行",Toast.LENGTH_LONG).show();
        sqLiteDatabase.close();
    }
    //查
    public void click3(View v){
        //获取数据库
        SQLiteDatabase sqLiteDatabase=myOpenHelper.getWritableDatabase();
        //执行查找的sql语句  返回值为结果集  不需要占位  写null
        //Cursor cursor=sqLiteDatabase.rawQuery("select * from info",null);
        /*
        * 第一个表名 第二个columns为要查询的列要查询所有可以填null相当于*
        * 第三个selection查询条件 相当于where 第四个selectionAgs为条件的值
        * 第四个是否分组 第五个过滤条件 第六个排序方式
        * */
//使用谷歌api
        Cursor cursor=sqLiteDatabase.query("info",new String[]{"phone"},"name=?",new String[]{"张三"},null,null,null);
        if (cursor!=null && cursor.getCount()>0){
            while (cursor.moveToNext()){
                //参数为  列的索引  从零开始
                //String name=cursor.getString(1);
                String phone=cursor.getString(0);
                System.out.println("phone"+phone);
            }
        }
        sqLiteDatabase.close();
    }
    //改
    public void click4(View v){
        //获取数据库
        SQLiteDatabase sqLiteDatabase=myOpenHelper.getWritableDatabase();
        //执行修改的sql语句
        //sqLiteDatabase.execSQL("update info set phone='1355555' where name='张三'");
        ContentValues contentValues=new ContentValues();
        contentValues.put("phone","155");
        //第一个表名  第二个ContentValues内部封装了一个Map key为对应列的名字values为对应值  输入要修改的列和数据
        //第三个条件 第四个条件的值
//使用谷歌api
        int update=sqLiteDatabase.update("info",contentValues,"name=?",new String[]{"张三"});
        Toast.makeText(getApplicationContext(),"更新了"+update+"行",Toast.LENGTH_LONG).show();
        sqLiteDatabase.close();
        }

3)数据库的事务  实务失败自动回滚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值