zoukankan      html  css  js  c++  java
  • 每日日报

    Android下数据库操作表(通过sql语句)

     

           相关API

     

                    ①插入删除修改相关操作 sqlitedatabase的 execSQL方法

     

                    ②查询操作  sqlitedatabase的 rawQuery方法

     

                    ③ 查询结果返回 Curor(游标 类似JDBC中的ResultSet)

     

                            curor相关方法 moveToNext() 移动到下一行

     

                                                     getCount() 返回查询到的结果一共有多少行

     

                                                     getColumnCount()返回一条结果中有多少列

     

                                                     getString(index), getInt(index) 根据列序号返回相应记录(序号从0开始)

     

            代码

     

    1. public void insert(View v) {
    2. SQLiteDatabase db = openHelper.getReadableDatabase();
    3. db.execSQL("insert into info(name,phone) values('赵四','13888888888')");
    4. db.execSQL("insert into info(name,phone) values('王五','13888888888')");
    5. db.close();
    6. }
    7. public void update(View v) {
    8. SQLiteDatabase db = openHelper.getReadableDatabase();
    9. db.execSQL("update info set phone = '12345678' where name='赵四' ");
    10. db.close();
    11. }
    12. public void delete(View v) {
    13. SQLiteDatabase db = openHelper.getReadableDatabase();
    14. db.execSQL("delete from info where name = '赵四'");
    15. db.close();
    16. }
    17. public void query(View v) {
    18. SQLiteDatabase db = openHelper.getReadableDatabase();
    19. Cursor cursor = db.rawQuery("select * from info where name = ? ; ", new String[]{"王五"});
    20. while(cursor.moveToNext()){
    21. for (int i = 0; i < cursor.getColumnCount(); i++) {
    22. String result = cursor.getString(i);
    23. Log.d("MainActivity", result+"");
    24. }
    25. }
    26. db.close();
    27. }

     

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

    对比

        大量数据效率 SQL语句灵活性 方法是否有返回值 SQL出错概率
    通过sql执行CRUD 效率高 灵活性强任意发挥 除查询外无 有可能出错
    通过api执行CRUD 需要拼语句效率低 受api限制 都有返回值 不会出错
  • 相关阅读:
    通过SSH隧道的本地转发实现Django连接远程数据库
    Mysql多数据库备份
    apollo 项目配置中心开源框架部署
    nginx 配置多个 https 域名访问
    beetl 模板语法
    异常:由 spring-session pom 引发
    异常:NoSuchFieldError: BEST_MATCHING_HANDLER_ATTRIBUTE
    【Redis__验证】手机验证和限制登录功能
    【Linux__环境】配置
    【Layui__上传】多图上传
  • 原文地址:https://www.cnblogs.com/zhukaile/p/14376754.html
Copyright © 2011-2022 走看看