我正在用Java創建一個客戶端 - 服務器應用程序。在服務器上,我有一個Microsoft Access數據庫(SQL),並在客戶端上我有JFrame窗體。我有一個客戶端和服務器之間的溝通,它沒有任何問題。我的表單有一個特定的文本字段(我們稱之爲txtField)。我需要通過表單將某些數據插入到我的數據庫中。但在此之前,需要檢查數據庫中是否存在已在txtField中鍵入的值。我如何做到這一點,以及在哪裏編寫這段代碼,我猜想在表單中? 謝謝如何檢查數據庫中是否存在該值?
1
A
回答
3
我需要通過表單插入某些數據到我的數據庫。但在此之前,需要檢查數據庫中是否存在已在txtField中鍵入的值。
號你需要把它插入到數據庫中,如果它已不存在。正確的方法是嘗試插入並捕獲失敗。否則,您會在您的支票和您的支票之間創建一個時間窗口問題,在此期間另一個客戶端可能會執行插入操作。
+0
非常重要的一點是,當你的EXISTS查詢和SELECT查詢之間的表元素可能發生變化時 –
1
你應該寫你這樣的查詢:
Insert into [Table](Field1,Field2)
Select Top 1 Val1,Val2
FROM
[Table]
WHERE NOT EXISTS(SELECT * FROM [Table] Where Field1 = Val1 and Field2 = Val2)
在這裏你可以看到的例子: Conditional Insert Query Based on Data in Target Table
0
下面我將如何使用參數化查詢做到這一點在Java中:
import java.sql.*;
public class JDBCQuery {
public static void main(String args[]) {
Connection conn = null;
PreparedStatement s = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
"DBQ=C:\\Users\\Public\\Database1.accdb;");
String txtField = "Java"; // value to insert
s = conn.prepareStatement(
"INSERT INTO Table1 (thing) " +
"SELECT ? AS thing " +
"FROM (SELECT COUNT(*) FROM Table1) " +
"WHERE NOT EXISTS " +
"(" +
"SELECT thing FROM Table1 " +
"WHERE thing=? " +
")");
s.setString(1, txtField);
s.setString(2, txtField);
if (s.executeUpdate() > 0) {
System.out.println("The row was inserted.");
}
else {
System.out.println("The row was not inserted.");
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
if (s != null) {
s.close();
}
if (conn != null) {
conn.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
}
相關問題
- 1. 如何檢查SQLLite數據庫中是否存在「名稱」值?
- 2. 如何檢查數據庫中是否存在多個值?
- 3. 如何檢查數據庫中是否存在值對?
- 4. 如何查詢postgreSQL數據庫來檢查值是否存在?
- 5. 如何檢查數據庫中是否存在數據?
- 6. 如何檢查Firebase數據庫值是否存在?
- 7. Firebase實時數據庫:如何檢查子值是否存在
- 8. 檢查數據庫中是否存在該記錄
- 9. 如何檢查數據庫是否存在,該數據庫的用戶有權連接該數據庫 - Laravel
- 10. MySQL檢查數據庫是否存在
- 11. JavaDB - 檢查數據庫是否存在
- 12. 檢查SQLite數據庫是否存在
- 13. 檢查數據庫是否存在
- 14. 如何從數據庫中檢查列是否存在表中?
- 15. 如何檢查在Access數據庫中是否存在記錄
- 16. 如何檢查數據庫表是否存在或不存在?
- 17. chechbox檢查是否值在數據庫
- 18. 檢查數據庫中是否存在數據庫
- 19. 如何在數據表的列中檢查值是否存在?
- 20. 如何檢查數據在數據庫中是否已經存在保存
- 21. 如何檢查Wordnet數據庫中是否存在單詞
- 22. SQLAlchemy:如何檢查數據庫中是否存在
- 23. 如何檢查數據庫是否存在於mysql程序中
- 24. 如何檢查數據庫是否存在於SQLite中?
- 25. 如何檢查變量是否保存在數據庫中?
- 26. 如何檢查數據庫中是否存在文件?
- 27. 如何檢查數據庫中是否存在聯繫人android
- 28. 如何正確檢查數據庫中是否存在行?
- 29. 如何檢查數據庫中是否存在字段?
- 30. 如何檢查ID是否已存儲在數據庫中?
可能的重複[最好的方法來測試如果行中存在一個MySQL表](http://stackoverflow.com/questions/1676551/bes t-way-to-test-if-a-row-exists-in-a-mysql-table) –