public static void main(String[] args) {
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:C:\\users\\tim\\airline\\flightschedule.db");
PreparedStatement statement = connection.prepareStatement("INSERT INTO flights (flightID,departure,arrival)VALUES(?,?,?)");
statement.setInt(1,5);
statement.setString(2,"David");
statement.setString(3,"Ortiz");
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
回答
您應該調用其他方法。
首先第一件事情,但:
錯誤代碼(全方位開放的SQL注入攻擊):
statement = connection.createStatement();
resultSet = statement.executeQuery(
"INSERT INTO flights
('flightID','departure','arrival')
VALUES('"+flightID+"','"+departure+"','"+arrival+"')");
好的代碼:
PreparedStatement statement = connection.prepareStatement(
"INSERT INTO flights (flightID,departure,arrival)
VALUES(?,?,?)");
statement.setString(1,flightID);
statement.setString(2,departure);
statement.setString(3,arrival);
statement.executeUpdate();
// thanks to @lobster1234 for reminder!
connection.commit();
你有沒有注意到我做的executeUpdate()代替executeQuery()?因爲這是你麻煩的原因。
P.S.我還注意到,您將flightID作爲int傳入方法,但將其作爲字符串插入到數據庫中。通常不是一個好習慣。堅持一種數據類型。如果ID實際上是一個數字,則將其作爲數據庫中的一個數字,然後調用setInt(1,flightID);或者,也可以像String一樣傳遞它。
嘗試在executeUpdate()
之後致電connection.commit()
。您還可以獲得executeUpdate()
返回的值,並確保得到1而不是0,因爲此調用返回受該語句影響的行數。
hehe ...現在我想知道在將commit()添加到...之後,將INSERT傳遞給query()的原始版本是否也能與SQLite一起工作... – 2011-04-25 03:30:29
我聽到你!我被Spring-JDBC寵壞了,你不必處理樣板代碼太多:) – lobster1234 2011-04-25 03:33:09
- 1. 將數據插入數據庫時遇到問題
- 2. 數據插入問題到數據庫
- 3. 將SQLite數據插入MySql數據庫
- 4. 將數據插入SQLite數據庫
- 5. 插入數據到SQLite數據庫表
- 6. 將數據從數據表插入到數據庫的問題#
- 7. 在將數據插入到SQLite數據庫時發生異常
- 8. 在使用PHP插入MySql數據庫中的數據時遇到問題
- 9. 用knexjs將數據插入sqlite時遇到困難
- 10. 在sqlite數據庫中插入數據的問題
- 11. 將數據插入雲數據庫時的問題
- 12. 數組從數據庫獲取數據時遇到的問題
- 13. 嘗試將數據插入到SQLite數據庫時數據類型不匹配
- 14. 無法在OBJ C到將數據插入SQLite數據庫
- 15. 將數據插入到Android SQLite數據庫中
- 16. 無法將數據插入到iPhone上的sqlite數據庫
- 17. 無法將數據插入到Android設備的sqlite數據庫
- 18. 使用LINQ to SQL將數據插入到SQLite數據庫
- 19. 方便的工具將數據插入到SQLite數據庫?
- 20. 加載數據庫中的數據時遇到問題
- 21. 接收數據庫中的數據時遇到問題
- 22. SQLite的選擇,同時插入數據到數據庫
- 23. 使用默認值插入數據時遇到問題
- 24. 將數據庫與ajax連接到php時遇到問題
- 25. 插入android.text.format.Time.toMillis值到droid上的SQLite數據庫的問題
- 26. 在sqlite數據庫中插入數據到數據庫時出現NullPointerException
- 27. sqlite中的數據插入問題
- 28. Sqlite iPhone數據插入問題
- 29. 在SQLite中插入數據的問題?
- 30. Android的SQLite數據插入問題
你能粘貼你看到的異常跟蹤嗎? – lobster1234 2011-04-25 02:40:27
我沒有看到任何 – tim 2011-04-25 02:45:45