Android使用谷歌封装好的api增删查改

来源:互联网 发布:摄像头美化软件 编辑:程序博客网 时间:2024/05/18 02:42
public class MainActivity extends AppCompatActivity {    private MyOpenHelper myOpenHelper;    private ListView lv;    private List<Person> lists;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //0 找到lv        lv = (ListView) findViewById(R.id.lv);        myOpenHelper = new MyOpenHelper(getApplicationContext());        //1 定义一个集合用来存listview要显示的数据        lists = new ArrayList<>();        //打开或者创建数据库 如果是第一次就创建//        SQLiteDatabase sqLiteDatabase = myOpenHelper.getWritableDatabase();        //打开或者创建数据库 如果是第一次就创建 如果磁盘满了 返回只读的//        SQLiteDatabase readableDatabase = myOpenHelper.getReadableDatabase();    }    //点击按钮增加一条记录    public void click1(View v) {        //1 获取数据库对象        SQLiteDatabase db = myOpenHelper.getWritableDatabase();        //2 执行增加一条的sql语句//        db.execSQL("insert into info(name,phone) values(?,?)", new Object[]{"张三","13888"});        /**         * table 表名         * ContentValues 内部封装了一个map key:对应列的名字 value对应的值         */        ContentValues values = new ContentValues();        values.put("name", "王五");        values.put("phone", "110");        //返回值代表插入新行的id        long insert = db.insert("info", null, values); //底层就在组拼sql语句        //3 数据库用完需要关闭        db.close();        if (insert>0) {            Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT).show();        } else {            Toast.makeText(getApplicationContext(), "添加失败", Toast.LENGTH_SHORT).show();        }    }    //删除    public void click2(View v) {        SQLiteDatabase db = myOpenHelper.getWritableDatabase();//        db.execSQL("delete from info where name=?", new Object[]{"张三"});        //返回值代表影响的行数        int delete = db.delete("info", "name=?", new String[]{"王五"});        db.close();        Toast.makeText(getApplicationContext(), "删除了"+delete+"行", Toast.LENGTH_SHORT).show();    }    //更新    public void click3(View v) {        SQLiteDatabase db = myOpenHelper.getWritableDatabase();//        db.execSQL("update info set phone=? where name=?",new Object[]{"13999","张三"});        ContentValues values = new ContentValues();        values.put("phone", "114");        //代表更新多少行        int update = db.update("info", values, "name=?", new String[]{"王五"});        db.close();        Toast.makeText(getApplicationContext(), "更新了"+update+"行", Toast.LENGTH_SHORT).show();    }    //查找    public void click4(View v) {        SQLiteDatabase db = myOpenHelper.getWritableDatabase();        //columns 代表你要查询的列        //selection 根据什么查询phone//        Cursor cursor =db.query("info", new String[]{"name","phone"}, "name=?", new String[]{"王五"}, null, null, null);        Cursor cursor = db.query("info", null, null, null, null, null, null);//        Cursor cursor = db.rawQuery("select * from info", null);        if (cursor!= null && cursor.getCount()>0) {            while (cursor.moveToNext()) {                //columnIndex代表列的索引                String name = cursor.getString(1);                String phone = cursor.getString(2);//                Log.d("Test", "name:"+name+"----"+phone);                //把数据封装到javabean                Person person = new Person();                person.setName(name);                person.setPhone(phone);                //把javabean对象加入到集合                lists.add(person);            }            lv.setAdapter(new MyAdapter());        }    }    // TODO: 2017/4/15      //定义listview的适配器    private class MyAdapter extends BaseAdapter {        @Override        public int getCount() {            return lists.size();        }        @Override        public Object getItem(int position) {            return null;        }        @Override        public long getItemId(int position) {            return 0;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            View view;            if (convertView == null) {                //创建新的view对象 inflate打气筒                view = View.inflate(getApplicationContext(), R.layout.item, null);            } else {                view = convertView;            }            //找到控件用来显示数据            TextView tv_name = (TextView) view.findViewById(R.id.tv_name);            TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);            //如何显示数据            Person person = lists.get(position);            tv_name.setText(person.getName());            tv_phone.setText(person.getPhone());            return view;        }    }}


这里有个小插曲,在MyAdapter类中调用findViewById是找不到控件Id的,会报NullPointerException,需要在前面加类内定义好的view。

            //找到控件用来显示数据            TextView tv_name = (TextView) view.findViewById(R.id.tv_name);            TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);


public class MyOpenHelper extends SQLiteOpenHelper {    /**     *     * @param context 上下文     * @param name 数据库的名字     * @param factory 目的创建cursor对象     * @param version 数据库的版本 从i开始     */    public MyOpenHelper(Context context) {        super(context, "itheima.db", null, 1);    }    /**     *当数据库第一次创建的时候调用     * 那么这个方法特别适合做表结构的初始化 创建表就是写sql语句     * @param db     */    @Override    public void onCreate(SQLiteDatabase db) {        //id 一般为 _id        db.execSQL("create table info(_id integer primary key autoincrement, name varchar(20), phone varchar(20))");    }    /**     * Called when the database needs to be upgraded     * 当数据库版本升级的时候调用     * 这个方法适合做表结构的更新     * @param db     * @param oldVersion     * @param newVersion     */    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        db.execSQL("alter table info add phone varchar(20)");    }}


1 0
原创粉丝点击