簡體   English   中英

如何檢查兩個值是否存在?

[英]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_idchild_id插入LETTER (這是一個表),並插入WISHED TOY (這是一個表)。

為此,將第二行插入數據庫:字母存在,並且child_id相同,但是toy_id不同。 然后,將值更新為LETTER ,並將letter_idtoy_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM