【问题标题】:Java adding data to table using SQLJava 使用 SQL 向表中添加数据
【发布时间】:2014-02-26 16:34:33
【问题描述】:

我正在使用 sql 查询将数据数据添加到现有数据库表中。 我想在“Room_Resource”和“Quantity”列下添加数据。 该系统旨在允许预订,我正在尝试将预订添加到 tblBookings 表中,下面的代码取自 JButton 单击功能。

  • 我要添加到 Room_Resource 的值是取自系统中选定表的名称。我为此“resourceChosenString”声明了一个变量
  • 我要添加到数量的值来自我声明的与组合框相关的“数量”变量。

这是我的声明:

int selectedResourceRow = tblResources.getSelectedRow();       
Object resourceChosen = tblResources.getValueAt(selectedResourceRow,1);   
String resourceChosenString = resourceChosen.toString();   
int Quantity = cmbQuantity.getSelectedIndex();

然后我有一个sql语句:

String sql = ("INSERT INTO tblBookings (Room_Resource,Quantity) VALUES (" + resourceChosenString + " ', ' " + Quantity + " ',)  ");

然后是执行代码:

try{  
pst = conn.prepareStatement(sql);  
pst.execute();   
JOptionPane.showMessageDialog(null, "Added");  
} catch (Exception e){  
JOptionPane.showMessageDialog(null, "Error Adding Booking");  
}

目前,当我尝试将数据添加到表中时,它给了我一个错误,并想知道是否有人有任何建议?

我还认为,问题可能在于我在外部表中有两个以上的列,而我正在向其中添加数据的表中的列可以留空。如果这可能是问题,谁能告诉我如何解决它?可能如果有一个空函数我可以使用而不是值。

【问题讨论】:

  • 你得到了什么错误,用堆栈跟踪更新你的帖子

标签: java sql insert add


【解决方案1】:

您可能想告诉我们您正在使用的数据库以及收到的错误消息。但是刚开始,您的 sql 字符串的格式似乎不正确。我不知道您是否在问题中输入错误,或者您的代码是否有简单的语法错误。

只是用你所拥有的东西从臀部拍摄,看起来你的 sql 语句应该是:

String sql = "INSERT INTO tblBookings (Room_Resource,Quantity) VALUES ('" + resourceChosenString + "', " + Quantity + ")";

请注意,resourceChosenString 应该用单引号括起来(您缺少左侧的单引号)。另外,我认为您不应该将数字用单引号括起来(我可能是错的,因为我不知道您使用的是哪个数据库)。

Qwerky 是对的;你应该使用PreparedStatement

【讨论】:

    【解决方案2】:

    您生成的 SQL 无效,如下所示;

    INSERT INTO tblBookings (Room_Resource,Quantity) VALUES (resource ', ' 1 ',)  
                                                             ^                ^
                                                 missing quote       extraneous comma
    

    你应该整理一下,或者最好还是使用PreparedStatement

    String sql = "insert into tblBookings (Room_Resource,Quantity) values (?, ?)";
    PreparedStatement pst = conn.prepareStatement(sql);  
    pst.setString(1, resourceChosenString);
    pst.setInt(2, quantity);  //variable names are not capitalised by convention
    pst.execute();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      相关资源
      最近更新 更多