我正在處理用於收集客戶信息並將其存儲到名爲「BOOKINGS」的表中的項目該表具有列「CUSTOMERNAME」,「HOLIDAYNAME」 ,「MAGICIAN」和「TIMESTAMP」單擊按鈕時使用靜態方法將值插入數據庫表
我有一個名爲「DatabaseConnection」的類,它建立了與具有預訂表的數據庫的連接。該課程在項目的其他領域按預期發揮作用。在課堂上,我有一個名爲「addBooking」的靜態方法我有一個GUI類(使用Netbeans GUI生成器),它有一個操作執行的方法。下面是actionPerformed方法和addBooking方法的代碼...
private void bookButtonActionPerformed(java.awt.event.ActionEvent evt) {
String customerName = customerNameText.getText();
String magician = (String)magicianCombo.getSelectedItem();
String holiday = (String)holidayCombo.getSelectedItem();
customerNameText.setText(null);
try {
DatabaseConnection.addBooking(customerName, holiday, magician);
} catch (SQLException ex) {
Logger.getLogger(GUI1Frame.class.getName()).log(Level.SEVERE, null, ex);
}
}
我沒有發送任何信息,時間戳,因爲我還沒有想通的那部分,只是還沒有。以下是DatabaseConnection類中addBooking方法的代碼。
public static void addBooking(String name, String holiday, String employee) throws SQLException {
stmt.execute("INSERT INTO BOOKINGS (CUSTOMERNAME, HOLIDAYNAME, MAGICIAN) VALUES ('"+name+"','"+holiday+"','"+employee+"')");
}
單擊該按鈕應該得到一個文本框(用戶名)的信息,從組合框(假日)和信息從另一個組合框(員工)的信息。我無法弄清楚它爲什麼不起作用,但是無論何時單擊該按鈕,程序將凍結約10-15秒,然後繼續,但是表中沒有信息輸入。任何幫助將不勝感激,謝謝。
編輯:增加了對的DatabaseConnection班上的其他
public class DatabaseConnection {
String host = "jdbc:derby://localhost:1527/MagicianAgent";
String username = "java";
String password = "java";
static Connection con = null;
ResultSet rs = null;
static Statement stmt;
DatabaseConnection() {
try {
con = DriverManager.getConnection(host, username, password);
stmt = con.createStatement();
}
catch(SQLException err) {
System.out.println(err.getMessage());
}
}
public ResultSet getRS(String sql) {
try {
rs = stmt.executeQuery(sql);
}
catch(SQLException err) {
System.out.println(err.getMessage());
}
return rs;
}
編輯2代碼:這是一些代碼,我在的主要方法。
Holiday holidayList = new Holiday();
Magician magicianNames = new Magician();
arrays = magicianNames.getMagicianNames();
for(int e = 0; e < arrays.size(); e++) {
magicianCombo.addItem(arrays.get(e));
}
arrays = holidayList.getHolidayList();
for(int e = 0; e < arrays.size(); e++) {
holidayCombo.addItem(arrays.get(e));
}
在節日和魔術師建設者,他們訪問過的DatabaseConnection數據庫和節日的名稱和魔術師名的值存儲在一個ArrayList。然後,ArrayList項目被添加到組合框,直到到達ArrayList的末尾。我不確定這是否會改變任何事情的行爲,但我認爲我應該添加它。
告訴我們更多關於'DatabaseConnection' – jtomaszk
除了別的,你的'addBooking'方法應該是固定的使用參數化SQL。在處理SQL注入攻擊可能對業務造成威脅的任何實際代碼之前,請先了解*現在的習慣...... –
通常,語句是使用查詢準備的,然後執行 - 什麼是「stmt」?此外,你的代碼容易受到[sql注入](http://stackoverflow.com/search?q=sql+injection):如果你輸入'','',''); DROP TABLE BOOKINGS --'在customerName字段中,.... – Kenney