[英]How to check if two values exists?
我正在嘗試實現一個程序(使用Java),該程序檢查數據庫(PostgreSQL)中是否存在兩個值。 這是我的問題:
我有一個外部文檔,Java讀取了這些值:
# letter_id, child_id, toy_id
18,1,2
18,1,3
18,2,1
第一行將此值放入數據庫,其原因如下:letter在我的數據庫中不存在,然后將letter_id
和child_id
插入LETTER
(這是一個表),並插入WISHED TOY
(這是一個表)。
為此,將第二行插入數據庫:字母存在,並且child_id
相同,但是toy_id
不同。 然后,將值更新為LETTER
,並將letter_id
和toy_id
插入WISHED TOY
。
由於以下原因,第三行將失敗:字母存在且child_id
不同,並且這是不可能的,只有一個孩子可以寫1個字母。 無法添加這種情況,因為兩個孩子不能寫相同的字母。
我具有要使用的以下功能:
private Integer getLetterId(List<String> row)
{
String integer;
String[] rowArray = (String[]) row.toArray(new String[0]);
integer = rowArray[0]; //Letter_Id
return (null != integer) ? Integer.valueOf(integer) : null;
}
private Integer getChildId(List<String> row)
{
String integer;
String[] rowArray = (String[]) row.toArray(new String[0]);
integer = rowArray[1]; //Child_Id
return (null != integer) ? Integer.valueOf(integer) : null;
}
我的想法是這樣的:
If letter exists {
If letter exists for this child {
UPDATE LETTER
INSERT WISHED
}
ELSE {
//this case will be return an error because letter not coincide with child
}
Else {
Insert Letter
Insert Wished
}
}
Wished是另一個表,該表在存在或不存在字母的情況下放置字母和toy_id。
我了解如何實現第一個'if':(if(rs.next()))
但我認為我對此'if'有問題:if(childId == row.getChildId(1))
那么,我該怎么辦呢? 有什么幫助嗎?
編輯:對不起,我不知道我在做什么不好:
if (conn != null) {
PreparedStatement selectPS = null;
ResultSet rs = null;
Integer childId;
Integer letterId;
try {
String selectSql = "SELECT child_id FROM letter WHERE letter_id = ?";
selectPS = conn.prepareStatement(selectSql);
for (List<String> row : fileContents) {
// TODO Update or insert record from PLAYER for every row in file
selectPS.clearParameters();
setSelectPreparedStatement (selectPS,row);
rs = selectPS.executeQuery();
childId = rs.getInt("child_id");
letterId = rs.getInt("letter_id");
if (rs.next())
{
if (childId == getChildId (row))
{
System.out.println("Updating");
}
if (childId != getChildId (row) && letterId == getLetterId(row))
{
System.out.println("This letter are used by other child");
}
}
else
{
System.out.println("Inserting values to letter and wished");
}
}
}
}
我收到此錯誤:
錯誤:執行中
SQL ResultSet放置不正確,也許您需要調用下一個。
在rs = selectPS.executeQuery();
您必須檢查是否有任何行,這意味着rs.next()
應該運行。 我的意思是您必須移動childId = rs.getInt("child_id"); letterId = rs.getInt("letter_id");
childId = rs.getInt("child_id"); letterId = rs.getInt("letter_id");
在if(rs.next()){
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.