ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

每日日报

2021-02-05 11:36:39  阅读:194  来源: 互联网

标签:info sqLiteDatabase phone 日报 每日 String values name


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限制 都有返回值 不会出错

标签:info,sqLiteDatabase,phone,日报,每日,String,values,name
来源: https://www.cnblogs.com/zhukaile/p/14376754.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有