我正在使用sql查询将数据数据添加到现有数据库表。 我想在“Room_Resource”和“Quantity”列下添加数据。 该系统旨在允许预订,我正在尝试添加对tblBookings表的预订,下面的代码取自JButton点击功能。
以下是我的声明:
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");
}
目前,当我尝试将数据添加到表中并想知道是否有人有任何建议时,它会给我一个错误?
此外,我认为可能问题可能在于我在外部表中有两列以上的事实以及我将数据添加到表中的列可以留空。如果这可能是问题,有人能告诉我如何解决它吗?可能如果有空函数我可以使用而不是值。
答案 0 :(得分:0)
您生成的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();
答案 1 :(得分:0)
您可能想告诉我们您正在使用的数据库以及您收到的错误消息。但是刚刚开始,看起来你的sql字符串格式不正确。我不知道你是否在问题中输入错误,或者你的代码是否有简单的语法错误。
只要用你所拥有的东西拍摄,看起来你的sql语句应该是:
String sql = "INSERT INTO tblBookings (Room_Resource,Quantity) VALUES ('" + resourceChosenString + "', " + Quantity + ")";
请注意,resourceChosenString
应该用单引号括起来(你错过了左边的单引号)。另外,我认为你不应该用单引号括起一个数字(我可能错了,因为我不知道你正在使用哪个数据库)。
PreparedStatement
。