欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQLite数据库对数据的基本操作(二)

程序员文章站 2022-06-01 08:49:21
...
public class MainActivity extends BaseActivity implements OnClickListener {
    private SQLiteDatabase sqLiteDatabase;
    private ContentValues values;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();


        MySqliteDataBase mySqliteDataBase = new MySqliteDataBase(this, 1);
        // 获取一个数据库的操作对象,对数据库进行操作(增删改查)
        sqLiteDatabase = mySqliteDataBase.getReadableDatabase();
    }


    // 设置控件的点击事件
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.add:

            String addName = getViewContent(addNameEditText);
            String addPrice = getViewContent(addPriceEditText);

            if (addName == null || addName.equals("") || addPrice.equals("")) {
                toast("您输入的商品名称和价格有误,请重新输入");
                return;
            }
            //方式一:
            /**
             * 第一个参数:sql语句
             * 第二个参数:占位符的值
             * */
            //sqLiteDatabase.execSQL("insert into good(name,price) values (?,?)", new Object[]{addName,addPrice});

            //方式二:
            /**
             * 参数一:表名
             * 参数二:通常设置为空
             * 参数三:需要插入的数据的集合
             * */
            values = new ContentValues();
            values.put("name", addName);//key要和表中的字段名称一样
            values.put("price", addPrice);
            sqLiteDatabase.insert("good", null, values);

            toast("商品添加成功!!!");
            break;
        case R.id.delete:
            String deleteid = getViewContent(deleteIdEditText);
            //方式一:
            //sqLiteDatabase.execSQL("delete from good where id = ?", new Object[]{deleteid});

            //方式二:
            /**
             * 参数一:表名
             * 参数二:删除的条件,通常写成 :"xx=?"
             * 参数三:删除的id
             * */
            sqLiteDatabase.delete("good", "id=?", new String[]{deleteid});
            toast("数据删除成功!!!");

            /**
             删除所有数据
            */
            //方式一执行sql语句
              db.execSQL("delete from good");
                方式二:调用delete方法
                //db.delete(good,null,null);
            break;
        case R.id.updata:
            String updateName = getViewContent(updataNameEditText);
            String updateId = getViewContent(updataIdEditText);
            //方式一:
            //sqLiteDatabase.execSQL("update good set name = ? where id = ?",new Object[]{updateName,updateId});

            //方式二:
            /**
             * 参数一:表名
             * 参数二:需要更新的数据的集合
             * 参数三:sql语句的条件字符串
             * 参数四:补全参数三中的占位符
             * */
            values = new ContentValues();
            values.put("name", updateName);
            sqLiteDatabase.update("good", values, "id=?", new String[]{updateId});
            toast("数据更新成功!!!");
            break;
        case R.id.find:
            //方式一:
            // Cursor cursor = sqLiteDatabase.rawQuery("select * from good",
            // null);
            // StringBuilder builder = new StringBuilder();
            // while (cursor.moveToNext()) {
            // String name = cursor.getString(cursor.getColumnIndex("name"));
            // String price = cursor.getString(cursor.getColumnIndex("price"));
            // String id = cursor.getString(cursor.getColumnIndex("id"));
            // builder.append(name + "," + price + "," + id + "\r\n" );
            // }
            // textView.setText(builder.toString());

            //方式二:
            /**
             * 参数一:表名
             * 参数二:查询的列数组(为null时,默认查找所有的列)
             * 参数三:查询条件(为null,则没有限制),预编译
             * 参数四:填充参数三中预编译的占位符
             * 参数五:
             * 参数六:
             * 参数七:
             * 参数八:
             * */
            List<Goods> listGoods = new ArrayList<Goods>();
            //查询单个数据
            //Cursor cursor = sqLiteDatabase.query("good", new String[]{"id","name","price"}, "id=?", new String[]{"63"}, null, null, null,null);

            //查找所有的数据
            Cursor cursor = sqLiteDatabase.query("good", null, null, null,null, null, null, null);
            StringBuilder builder = new StringBuilder();
            while (cursor.moveToNext()) {

                int id = cursor.getInt(cursor.getColumnIndex("id"));
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String price = cursor.getString(cursor.getColumnIndex("price"));

                goods = new Goods();
                goods.setId(id);
                goods.setName(name);
                goods.setPrice(price);
                //将对象添加到集合中
                listGoods.add(goods);
            }

            for (Goods g : listGoods) {//类型   数据源新的名字  : 数据源
                builder.append(g + "\r\n");
            }

            textView.setText(builder.toString());


            break;

        }

    }
}