【问题标题】:Strange database insertion issue in Phonegap and SQLitePhonegap 和 SQLite 中奇怪的数据库插入问题
【发布时间】:2012-12-07 19:49:15
【问题描述】:

我有以下 Phonegap SQLlite 插入语句:

tx.executeSql('insert into "'+gAppConfig.configTable+'" (key , value) values("uniqueId","'+uniqueId+'")' , [] , querySuccess, errorQuery); 
            

这两列都是文本数据类型,但插入查询不起作用。

uniqueId 是一个随机的 8 个字符的字符串,例如“e72361c6”。奇怪的是当我直接插入“e7231c6”时,它起作用了。为什么它不适用于变量?这里要注意的另一件事是,随机字符串是通过解密存储在服务器数据库中的值生成的。我正在解密并在服务器上获取 8 位随机字符串,然后将解密后的值发送到设备,存储在变量中并插入出现问题的数据库中。

当我在插入前提醒字符串时,它显示正确的 8 个字符的字符串。另一方面,如果我不解密并简单地从服务器发送 8 个字符串,则插入成功。也许它与编码/解码字符串格式有关。

【问题讨论】:

  • sqlite 是否区分单引号和双引号?
  • 我试过单引号和双引号
  • 尝试删除你拥有的 xtra "。像这样 ... tx.executeSql('insert into '+gAppConfig.configTable+' (key , value) values("uniqueId","'+uniqueId+' ")' , [] , querySuccess, errorQuery);
  • 顺便说一句,如果您使用变量会发生什么,它会产生错误还是会发生什么? :)
  • 是的,它抛出了 sqlite 错误“未定义”

标签: javascript sqlite cordova


【解决方案1】:

只需将“uniqueId”替换为 NULL

tx.executeSql('insert into "'+gAppConfig.configTable+'" (key , value) values(null,"'+uniqueId+'")' , [] , querySuccess, errorQuery);

或者你可以使用这个

tx.executeSql('insert into "'+gAppConfig.configTable+'" (value) values("'+uniqueId+'")' , [] , querySuccess, errorQuery);

请记住,您处理的是SQLite,而不是普通的 SQL 服务器。

【讨论】:

    【解决方案2】:

    在 SQL 中,表/列名等标识符应使用双引号,而字符串应使用单引号。 (支持其他引号以与其他数据库兼容,但可能会被误解。)

    INSERT INTO "MyTable"("col1", "col2")
    VALUES ('ABC', 'xyz')
    

    【讨论】:

      猜你喜欢
      • 2011-05-15
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      相关资源
      最近更新 更多