首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“M”附近的SQLite (1):语法错误

“M”附近的SQLite (1):语法错误
EN

Stack Overflow用户
提问于 2012-12-21 21:40:35
回答 2查看 635关注 0票数 1

我在android中创建了这个表:

代码语言:javascript
复制
     String CREATE_TABLE="CREATE TABLE " + db_NAME + " ("
                        + row_ID + " INT PRIMARY KEY AUTOINCREMENT,"
                        + row_NAME + " TEXT, "
                        + row_EMAIL + " TEXT, "
                        + row_WEBSITE + " TEXT, "
                        + row_TELEPHONE1 + " TEXT, "
                        + row_TELEPHONE2 + " TEXT, "
                        + row_TELEPHONE3 + " TEXT, "
                        + row_TELEPHONE4 + " TEXT, "
                        + row_TELEPHONE5 + " TEXT;";
    db_name.execSQL(CREATE_TABLE);

我尝试插入以下数据:

姓名:阿赫拉姆·M·侯赛因

电子邮件: ahlam@ahlam.ahlam

网址: www.ahlam.com

telephone#1: 123456789

telephone#2: 0987654321

telephone#3:

telephone#4:

telephone#5:

使用以下字符串:

代码语言:javascript
复制
     String sql_entry = String.format("Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s) values (%s, %s, %s, %s, %s, %s, %s, %s);",tab_NAME, row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5, name, email, website, telephone1, telephone2, telephone3,telephone4, telephone5);
     ourDatabase.execSQL(sql_entry);

其中:( row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5)是列名

和:(name, email, website, telephone1, telephone2, telephone3,telephone4, telephone5)是要插入到数据库的数据

当我运行应用程序时,我得到一个错误消息:

代码语言:javascript
复制
      SQLiteLog        (1) near "M" : syntax error

那么问题出在哪里呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-21 21:44:31

用单引号将非数字值引起来。

代码语言:javascript
复制
String sql_entry = String.format("Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s)"
 +" values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
  tab_NAME, row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, 
  row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5, name, email, website, 
  telephone1, telephone2, telephone3,telephone4, telephone5);
票数 1
EN

Stack Overflow用户

发布于 2012-12-21 21:44:30

您遗漏了包含字符串的'字符...

查询应为:

代码语言:javascript
复制
Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');

因此,创建查询字符串本身应该如下所示:

代码语言:javascript
复制
 String sql_entry = String.format("Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');",
tab_NAME, row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5, 
 name, email, website, telephone1, telephone2, telephone3,telephone4, telephone5);

顺便说一句,在开发应用程序时,我总是在不使用框架的情况下记录我创建的SQL查询-很容易犯这样的错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13991224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档