1

我在使用 JDBC 时遇到了这个问题。我可以创建一个名为 food.db 的表,其中包含早餐、午餐、晚餐的文本字段。当我调用以下...

          statement.executeUpdate("create table food (breakfast string, lunch string, dinner string)");
          breakfast = JOptionPane.showInputDialog("What was your breakfast?");
            lunch = JOptionPane.showInputDialog("What was your lunch?");
            dinner = JOptionPane.showInputDialog("What was your dinner?");
         statement.executeUpdate("insert into food values(\'"+breakfast+"\', \'"+lunch+"\' ,\'"+dinner+"\')");

但是,最后一条语句会导致错误。无论出于何种原因,它表明我为“早餐”输入的任何内容(例如,燕麦片)都不是列,即使我知道我可以以这种方式使用 SQLite 的语法来更新列。

我还检查了 executeUpdate() 的参数,单引号的语法和所有内容都匹配...我尝试了文本和字符串列字段,两者都得到相同的错误。

4

2 回答 2

2

试试这个

更改stringVARCHAR(SIZE)TEXT

 statement.executeUpdate("CREATE TABLE food (breakfast VARCHAR(25), lunch VARCHAR(25), dinner VARCHAR(25))");
 String breakfast = JOptionPane.showInputDialog("What was your breakfast?");
 String lunch = JOptionPane.showInputDialog("What was your lunch?");
 String dinner = JOptionPane.showInputDialog("What was your dinner?");
 statement.executeUpdate("INSERT INTO food (breakfast, lunch , dinner) VALUES ('"+breakfast+"', '"+lunch+"' ,'"+dinner+"')");
于 2013-05-10T14:38:18.037 回答
0

将您的 CREATE TABLE 更改为

statement.executeUpdate("create table food (breakfast text, lunch text, dinner text)");

您的 INSERT INTO 语句正在转义'不需要的单引号。改成

statement.executeUpdate("insert into food values('"+breakfast+"', '"+lunch+"' ,'"+dinner+"')");


SQLite 中没有string数据类型,但它不会给出错误,因为 SQLite 的 SQL 不是强类型的。列关联接管并将任何未知数据类型视为 NUMERIC。最好将列数据类型切换为 TEXT 或 VARCHAR。

于 2013-05-10T14:39:59.580 回答