【问题标题】:Android Database help needed需要 Android 数据库帮助
【发布时间】:2012-05-24 18:57:13
【问题描述】:

我有一个包含两个编辑文本字段的活动:一个用于标题,另一个用于故事。
两个文本字段的条目保存在数据库中,数据库中还有ROW_IDTITLE_IDSTORY_ID。条目显示在列表视图中。
当一个项目被长按时,我得到与该项目相对应的 row id
我应该如何从中获取TITLE_IDSTORY_ID

【问题讨论】:

  • 请贴出相关代码和任何logcat错误。
  • 学习一些基本的 SQL 会对你的情况有所帮助。
  • 好的@Imran 我会记住这一点的:)

标签: android android-listview textview android-database


【解决方案1】:

比如说,你有相应的行 id,它在变量 rid 中被长时间点击。然后运行以下查询:

  String q = "SELECT * FROM TABLE_NAME where(ROW_ID like '"+rid+"')";
  Cursor c = db.rawQuery(q, null); //  db is a object of SQLiteDatabase type  

然后像这样检索 TITLE_IDSTORY_ID

              if(c.getCount() == 0)
              {                   
                 //No entry found
              }
              else  {
                  c.moveToFirst();
                  do {
                      String titleid = c.getString(c.getColumnIndex("TITLE_ID")); 
                      String storyid = c.getString(c.getColumnIndex("STORY_ID"));
                      } while (c.moveToNext());                 
            c.close();

然后随意使用它们:)

【讨论】:

  • 没有理由进行原始查询。使用 .query() 的标准 sqlite 数据库交互就足够了。它也不太容易出错。
  • @JoxTraex 经过大量谷歌搜索和浏览开发者网站后,与 query() 相比,我无法找到 rawQuery 的任何性能下降。它们唯一的区别在于结构。 query() 需要您分段输入语句的不同部分,并用逗号分隔它们,但 rawQuery 中的语句对于初学者来说更容易理解。我应该为此投反对票吗?
  • 基本上规则是......如果它更简单,它更不容易出错。您的答案仍然是正确的,但是您对如此简单的事情使用原始查询的方法是矫枉过正。
  • @JoxTraex 在我的拙见中如果 rawQueryquery 之间没有性能差异,那么如何使用 rawQuery 对于这个简单的案例来说有点矫枉过正?
  • 这只是一个更容易出错的事实,而不是使用谷歌提供的简化类,如果你不需要做一个原始查询,不要。
【解决方案2】:

您可以在数据库中查询与 ROW_ID 对应的 TITLE_ID 和 STORY_ID。

发布您拥有的代码,我们将能够给出更具体的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2015-04-26
    • 2017-11-17
    相关资源
    最近更新 更多