2017-03-26 234 views
-2

如何在插入到(SQLite)數據庫之前檢查數據是否存在。我目前使用Java作爲平臺。如何在插入到(SQLite)數據庫之前檢查數據是否存在

Statement stmt = conn.createStatement(); 
String query ="SELECT * FROM tb_hall Where Activity_Name'"+txtTime+"'"; 
ResultSet rs = stmt.executeQuery(query); 
if(rs.next()) { 
    String sql = "Insert into tb_hall (Activity_Name, Organization, Venue, Date, Time) values(?, ?, ?, ?, ?)"; 
    pst = conn.prepareStatement(sql); 
    pst.setString(1, txtAct.getText()); 
    pst.setString(2, txtOrg.getText()); 
    pst.setString(3, rgbGroup.getSelection().getActionCommand()); 
    pst.setString(4, ((JTextField) date.getDateEditor().getUiComponent()).getText()); 
    pst.setString(5, txtTime.getText());     
    pst.execute(); 
    JOptionPane.showMessageDialog(null, "Saved!"); 
    txtAct.setText(null); 
    txtOrg.setText(null); 
    rgbGroup.clearSelection(); 
    date.setDate(null); 
    txtTime.setText(null); 

    // ... 

不幸的是它顯示,看起來像這樣一個很長的錯誤消息:this

+0

使用SELECT。除了[可能的SQL注入](http://bobby-tables.com/)你當前的代碼有什麼問題? –

+0

嗨,不幸的是,它顯示了一個非常長的錯誤消息 – jjang

+0

我明白了,因爲我們大多數人看不到你的屏幕,你可以複製/粘貼消息在你的問題([編輯](http://stackoverflow.com/posts/) 43026437 /編輯)它) –

回答

0

你可以嘗試使用count子句檢查是否與活動名稱的任何記錄中已經存在的數據庫或沒有。並根據針對該特定活動名稱獲得的行數,您可以執行進一步的操作。

這樣會至少讓你知道每個查詢是否出現問題,或者當前查詢出現問題,因此我們可以很容易地找出問題所在。

+0

嗨,感謝您的建議:)我用它,但仍然給我一個非常長的錯誤信息。我其實不確定我是否應該交換INSERT和SELECT部分 – jjang

0

我不能肯定地說因爲你發佈的錯誤圖片是截斷的,但我認爲你有一個GUI錯誤。從圖片剪輯看來,GUI組件出現語法錯誤。如果你可以顯示整個錯誤信息,這將有所幫助。

0

在將數據插入數據庫之前設計一個函數來驗證您的數據如何?例如:

public boolean isDataValid(Data data) { 
    ..... 
} 

public void saveDataToDB(Data data) { 
    if(isDataValid(data)) { 
     // write data to db 
    } else { 
     // invalid data handling 
    } 
} 
相關問題