【问题标题】:Unable to update Integer field in SQLite database无法更新 SQLite 数据库中的整数字段
【发布时间】:2013-08-12 07:13:39
【问题描述】:

我正在尝试通过添加 1 来更新 SQLite 数据库中的“整数”字段。所以是X = X+1

以下是我的代码

  public synchronized void updateStatistics(List<String> correctWords,
            List<String> facedWords, int wordListNumber, boolean flag) {
        // TODO Auto-generated method stub
        String[] tableLastNames= {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

        String tableName = "WordList_"+tableLastNames[wordListNumber];


        if(flag)
        {
            //First update 'FacedWords' row

            Toast.makeText(context, "Faced Words Length: "+facedWords.size(), Toast.LENGTH_LONG).show();
            Toast.makeText(context, "Correct Words Length: "+correctWords.size(), Toast.LENGTH_LONG).show();

            try
            {
                for(int i=0;i<facedWords.size();i++)
                {
                    String query = "update  "+ tableName+" set NumberOfTimesEnglishWordShowed=NumberOfTimesEnglishWordShowed+1 where EnglishWord = ' "+(facedWords.get(i)).trim()+"'";
                    database.execSQL(query);
                }

                for(int i=0;i<correctWords.size();i++)
                {
                    String query = "update   "+ tableName+" set NumberOfTimesEnglishWordCorrected=NumberOfTimesEnglishWordCorrected+1 where EnglishWord = ' "+(facedWords.get(i)).trim()+"'";
                    database.execSQL(query);
                }

                //Toast.makeText(context, "Updated Word: "+, duration)
            }
            catch(Exception e)
            {
                Toast.makeText(context, "Update error", Toast.LENGTH_LONG).show();
            }

        }



    }

我正在使用 SQLite 数据库浏览器查看我的数据库中的内容,我注意到上面的代码没有更新任何内容!也没有错误!如果您需要,以下是表格中所需的部分

String createDatabaseQuery = "create table WordList_A(" +
                    "ID integer primary key autoincrement,"
                    +"NumberOfTimesEnglishWordShowed integer,"

                    +"NumberOfTimesEnglishWordCorrected integer,");";

我使用的更新查询类似于 MS SQL 更新查询,所以我不确定这种方式是否适用于 SQLite。为什么我的代码没有更新任何内容?

【问题讨论】:

  • ' "+(facedWords.get(i)).trim()+"' 中的前导空格是故意的吗?好像错了……
  • @Heuster:太好了!就是这个!谢谢!由于您首先发现了问题,因此我想将您的答案标记为答案。请善意提供您的答案作为答案
  • Tnx,但只需将另一个答案标记为已接受。这不是比赛:)

标签: java android database eclipse sqlite


【解决方案1】:

我认为你的 where 子句中有额外的“空格”:

where EnglishWord = ' "+(facedWords.get(i)).trim()+"'"

所以替换为:

where EnglishWord = '"+(facedWords.get(i)).trim()+"'"

【讨论】:

  • 您好,非常感谢您的回答。有用!我已经给你+1了
  • 你的好运和你的 +1 ,祝你好运
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 2011-09-23
  • 2016-04-04
  • 1970-01-01
相关资源
最近更新 更多