• 每日日报


    Android下数据库操作表的优雅方法(通过谷歌提供的api)

            相关api

                    ①insert方法
                    ②delete方法
                    ③update方法
                    ④query方法
    1. public void insert1(View v) {
    2.        SQLiteDatabase sqLiteDatabase = openHelper.getReadableDatabase();
    3.        //--insert into info(name,phone) values('赵四','13777777');
    4.        //--insert into info() values();
    5.        //sqLiteDatabase.execSQL("insert into info(name,phone) values(?,?)", new Object[]{"赵四","1388888888"});
    6.        //第一个参数 表名字
    7.        String table = "info";
    8.        //第二个参数 避免产生插入空列的sql 如果第三个参数为空 sql会变成insert into info() values();
    9.        //如果传了nullColumnHack 并且第三个参数没有传 是空的情况 sql 会拼接成如下情况: insert into info(name) values(NULL)
    10.        String nullColumnHack = null;
    11.        //第三个参数 通过map的形式 保存要插入的列名 和对应的值
    12.        ContentValues values = new ContentValues();
    13.        values.put("name", "赵四");
    14.        values.put("phone", "188888888888");
    15.        
    16.        //最终是通过字符串拼接的形式 帮助生成sql 避免写错
    17.        //result 返回值是插入行的行号 如果返回-1说明插入失败
    18.        long result = sqLiteDatabase.insert(table, nullColumnHack, values);
    19.        if(result>=0){
    20.            Toast.makeText(this, "插入到第"+result+"行", Toast.LENGTH_SHORT).show();
    21.        }else{
    22.            Toast.makeText(this, "插入失败", Toast.LENGTH_SHORT).show();
    23.        }
    24.        sqLiteDatabase.close();
    25.    }
    26.
    27.    public void delete1(View v) {
    28.        SQLiteDatabase sqLiteDatabase = openHelper.getReadableDatabase();
    29.        //--delete from info where name='王五';
    30.        //sqLiteDatabase.execSQL("delete from info where name=?;", new Object[]{"赵四"});
    31.        //第二个参数 where条件  where后面的内容 具体删除的值用?代替
    32.        String whereClause = "name = ? and phone = ?";
    33.        //第三个参数 在where条件中 用?代替的具体的值
    34.        String[] whereArgs = new String[]{"赵四","13888888888"};
    35.        int num = sqLiteDatabase.delete("info", whereClause, whereArgs);
    36.        if(num>0){
    37.            Toast.makeText(this, "删除了"+num+"行", Toast.LENGTH_SHORT).show();
    38.        }else{
    39.            Toast.makeText(this, "没删,失败", Toast.LENGTH_SHORT).show();
    40.        }
    41.        sqLiteDatabase.close();
    42.
    43.    }
    44.
    45.    public void update1(View v) {
    46.        SQLiteDatabase sqLiteDatabase = openHelper.getReadableDatabase();
    47.        //--update info set phone='139999999'where name='王五';;
    48.        //sqLiteDatabase.execSQL("update info set phone=? where name=?", new Object[]{"1399999999","赵四"});
    49.        ContentValues values = new ContentValues();
    50.        values.put("phone", "13999999999");
    51.        String whereClause = "name = ?";
    52.        String[] whereArgs = new String[]{"赵四"};
    53.        int num = sqLiteDatabase.update("info", values, whereClause, whereArgs);
    54.        if(num>0){
    55.            Toast.makeText(this, "更新了"+num+"行", Toast.LENGTH_SHORT).show();
    56.        }else{
    57.            Toast.makeText(this, "没更新,失败", Toast.LENGTH_SHORT).show();
    58.        }
    59.        sqLiteDatabase.close();
    60.
    61.    }
    62.
    63.    public void query1(View v) {
    64.        SQLiteDatabase sqLiteDatabase = openHelper.getReadableDatabase();
    65.        //--select name,phone from info;;
    66.        //Cursor cursor = sqLiteDatabase.rawQuery("select * from info", null);
    67.        String[] columns = null;//要查询的列名字 如果传null 相当于select * from info;
    68.        String selection = null; //查询的条件 其中又变化的部分要用? 替换
    69.        String[] selectionArgs = null; //查询条件中 ? 所对应的值
    70.        String groupBy = null;//分组
    71.        String having = null;//分组接的条件
    72.        String orderBy = null;//排序
    73.        Cursor cursor = sqLiteDatabase.query("info", columns, selection, selectionArgs, groupBy, having, orderBy);
    74.        if(cursor!=null && cursor.getCount()>0){
    75.            while(cursor.moveToNext()){
    76.                String name = cursor.getString(1);
    77.                String phone = cursor.getString(cursor.getColumnIndex("phone"));
    78.                Log.e("sqlite", "name==="+name+"phone==="+phone);
    79.            }
    80.        }
    81.        cursor.close();
    82.        sqLiteDatabase.close();
    83.
    84.    }

    简单粗暴 VS 优雅方法 PK

        大量数据效率 SQL语句灵活性 方法是否有返回值 SQL出错概率
    通过sql执行CRUD 效率高 灵活性强任意发挥 除查询外无 有可能出错
    通过api执行CRUD 需要拼语句效率低 受api限制 都有返回值 不会出错
  • 相关阅读:
    UNDO表空间的ORA1122错误解决(二)转
    Oracle 碎片整理
    如何解决Ora00600 4194错误转自eygle
    Oracle维护常用sql语句
    ORA01152: file 1 was not restored from a sufficiently old backup
    oracle的一些信息抽取脚本.sql
    Flash Recovery Area空间不足导致数据库不能打开
    HP—UNIX的信息收集脚本
    详细解读 STATSPACK 报告
    OLTP和OLAP
  • 原文地址:https://www.cnblogs.com/zhukaile/p/14836085.html
Copyright © 2020-2023  润新知