Day09

Day

    /**
     * 构造
     * @param context 上下文
     * @param name  数据库名称
     * @param factory  创建数据的工厂对象
     * @param version 数据版本号
     */
    public MySqlHelper(Context context,  String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /**
     * 注意:onCreate方法只会执行一次,如果想要修改表的字段,
     * 修改oncreate方法的话是不行的,需要删除之前生成的数据库
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table user(_id integer primary key autoincrement,name varchar(20))");
    }

    /**
     * 更新数据 --- 如果数据库的 版本号发生变化, 执行该方法 --- 执行多次
     * @param db
     * @param oldVersion  老版本号
     * @param newVersion  新版本号
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
 public void insert(User user){
        //方法1,占位符的形式
        String sql = "insert into user(name,age,address) values(?,?,?)";
      //  db.execSQL(sql,new Object[]{user.getName(),user.getAge(),user.getAddress()});
        //方法2,系统的insert方法
        ContentValues contentValues = new ContentValues();
        contentValues.put("name",user.getName());
        contentValues.put("age",user.getAge());
        contentValues.put("address",user.getAddress());
        db.insert("user",null,contentValues);
    }
// 注意 参数不在是user,而是要跟新的字段和字段值
 public void update(String age , int id){
        //方法1
        String sql = "update user set age = ? where _id=?";
//        db.execSQL(sql,new Object[]{user.getAge(),user.get_id()});
        //方式2
        ContentValues contentValues = new ContentValues();
        contentValues.put("age",age);
        db.update("user",contentValues,"_id = ?",new String[]{id+""});
    }
public List<User> query() {
        ArrayList<User> users = new ArrayList<>();
        Cursor user = db.query("user", null, null, null, null, null, null);
        while(user.moveToNext()){
            //1,cursor.getColumnIndex("Name")  通过列名  获取所在列的编号
            //2,cursor.getString(列的编号);    通过列的编号, 得到该列的数据
            //不管id用不用,都要查,并且固定格式是 最好的格式 _id (有一个适配器强制的要求)
            String id = user.getString(user.getColumnIndex("_id"));
            String address = user.getString(user.getColumnIndex("address"));
            String name = user.getString(user.getColumnIndex("name"));
            String age = user.getString(user.getColumnIndex("age"));
            User user1 = new User(Integer.parseInt(id), name, Integer.parseInt(age), address);
            users.add(user1);
        }
        return users;
    }
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button insertId;
    private Button selectId;
    private Button updateId;
    private Button delId;
    private UserDao userDao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        insertId = findViewById(R.id.insert_id);
        selectId = findViewById(R.id.select_id);
        updateId = findViewById(R.id.update_id);
        delId = findViewById(R.id.del_id);


        insertId.setOnClickListener(this);
        selectId.setOnClickListener(this);
        updateId.setOnClickListener(this);
        delId.setOnClickListener(this);

        userDao = new UserDao(this);

    }

    @Override
    public void onClick(View v) {

        int id = v.getId();
        switch (id) {
            case R.id.insert_id:
                User user = new User();
                user.setAge(17);
                user.setName("冯");
                user.setAddress("北京");
                userDao.insert(user);
                break;

            case R.id.update_id:
                userDao.update("20",1);
                break;

            case R.id.del_id:
                int delete = userDao.delete("2");
                Toast.makeText(this, delete+"", Toast.LENGTH_SHORT).show();
                break;
            case R.id.select_id:
                List<User> query = userDao.query();
                Toast.makeText(this, query.get(0).getName(), Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}
public class UserDao {
    private SQLiteDatabase db;
    //通过构造创建一个db;
    public UserDao(Context context){
        MySqlHelper mySqlHelper = new MySqlHelper(context,"user.db",null,3);
        //可读可写.磁盘满了在尝试打开.(推荐使用)
        db = mySqlHelper.getReadableDatabase();
        //可读可写.磁盘满了,打开报错.
//        SQLiteDatabase writableDatabase = mySqlHelper.getWritableDatabase();
    }

    public void insert(User user){
        //方法1,占位符的形式
        String sql = "insert into user(name,age,address) values(?,?,?)";
//        db.execSQL(sql,new Object[]{user.getName(),user.getAge(),user.getAddress()});
        //方法2,系统的insert方法
        ContentValues contentValues = new ContentValues();
        contentValues.put("name",user.getName());
        contentValues.put("age",user.getAge());
        contentValues.put("address",user.getAddress());
        db.insert("user",null,contentValues);
    }

    public void update(String age , int id){
        //方法1
        String sql = "update user set age = ? where _id=?";
//        db.execSQL(sql,new Object[]{user.getAge(),user.get_id()});
        //方式2
        ContentValues contentValues = new ContentValues();
        contentValues.put("age",age);
        db.update("user",contentValues,"_id = ?",new String[]{id+""});
    }

    //删除数据
    public int delete(String id) {
        //方式一:
        String sql="delete from user where _id = ? ";
//        db.execSQL(sql,new String[]{id});
        //方式二:
        int num = db.delete("user", "_id=?", new String[]{id});
        return num;
    }

    //查询一组数据
    public List<User> query() {
        ArrayList<User> users = new ArrayList<>();
          //方式1
        String sql = "select * from user where _id = ?";
        Cursor user = db.rawQuery(sql, new String[]{"50"});
        //方式2
        Cursor user = db.query("user", null, null, null, null, null, null);
        while(user.moveToNext()){
            //1,cursor.getColumnIndex("Name")  通过列名  获取所在列的编号
            //2,cursor.getString(列的编号);    通过列的编号, 得到该列的数据
            //不管id用不用,都要查,并且固定格式是 最好的格式 _id (有一个适配器强制的要求)
            String id = user.getString(user.getColumnIndex("_id"));
            String address = user.getString(user.getColumnIndex("address"));
            String name = user.getString(user.getColumnIndex("name"));
            String age = user.getString(user.getColumnIndex("age"));
            User user1 = new User(Integer.parseInt(id), name, Integer.parseInt(age), address);
            users.add(user1);
        }
        return users;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值