【问题标题】:SQlite Query in android using cursorandroid中使用游标的SQlite查询
【发布时间】:2017-02-17 06:51:10
【问题描述】:

我的查询是SELECT DefaultId FROM tblsample where ('567' = DefaultId) || ('567' = Name)

在上面的查询中

table name = tblsample 
Column Names = DefaultId , Name
Input Value  = 567

现在我想检查该值在表中的哪一列中可用并返回其 DefaultId。我能够在 Sqlite 中实现这一点,想知道是否还有更好的方法来优化查询和在 android 中使用

database.query(boolean distinct, String table, String[] columns,String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

我必须在 android 中使用哪个查询。

【问题讨论】:

    标签: android sqlite android-sqlite android-cursor


    【解决方案1】:

    使用这个sn-p:

    String table = "tblsample";
    String selection = "DefaultId =? OR Name=?";
    String[] selectionArgs = new String[]{"567"};
    String[] projection = new String[]{"DefaultId","Name"}; // if you want to fetch only these two columns 
    

    在你的database.query之前:

    database.query(true, table, projection, selection, selectionArgs, null, null, null, null);
    

    更改 distinctlimitorderByhavegroupBy 的值> 如果你需要的话。

    【讨论】:

    • 我接受你的回答,但为什么我必须给我的 selectionArgs 一个数组而不是它的单个值
    • 通常它是一个值数组,然后将其用作数组,我不会用一个值和一个字符串变量对其进行测试。
    • 我的回答@Munchoo 有什么问题?我不明白你为什么不接受我的回答:/
    • 我尝试接受两个答案,但我不知道我们只能接受一个。抱歉改了nw
    【解决方案2】:

    您可以使用 SQLiteDatabase documentation 来指导您。

    表格

    • table = "tblsample";

    • columns = new String[]{"DefaultId"};

    在哪里

    • selection = "DefaultId =? OR Name=?";
    • selectionArgs = new String{"567"};

    【讨论】:

      【解决方案3】:
      String sql = "SELECT DefaultId FROM tblsample where (DefaultId = 567) OR (Name = 567)";
      Cursor cursor=database.rawQuery(sql,null);
      if(cursor != null && cursor.getCount()>0){
          //value available
      } else{
          //not avail
      }
      

      【讨论】:

      • SQLite中可以使用||吗?
      猜你喜欢
      • 2010-11-10
      • 2023-03-18
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2019-07-02
      相关资源
      最近更新 更多