我正在學習Java並剛剛開始使用mysql進行遊戲,並且在使用python工作的某些邏輯中遇到了一些問題,而且我在轉換時遇到了麻煩。突破了Java中的循環邏輯
我基本上有一個try語句,試圖搜索數據庫中是否存在記錄。如果它確實很好,它會繼續前進,但是如果記錄不存在,那麼它會添加它。這裏是我的代碼
try
{
PreparedStatement Findstatement;
Findstatement = con.prepareStatement(" SELECT DataMaster_MasterCode FROM Allocation WHERE Master_Code = (?) and date = (?)");
Findstatement.setInt(1, Code);
Findstatement.setString(2, AllocationDate);
ResultSet CodeAll = Findstatement.executeQuery();
int DataMaster_MasterCode;
while (CodeAll.next())
{
DataMaster_MasterCode = CodeAll.getInt("DataMaster_MasterCode");
}
System.out.println("Found allocation " + DataMaster_MasterCode + " already exists for " + Name);
}
catch (Exception e)
{ //Create statements... }
問題是,它一直要到異常,因爲DataMaster_MasterCode變量可能不被可能不被初始化。我認爲,因爲python只是執行代碼,所以它在python中工作,但是因爲java預編譯它,它認爲這是一個錯誤,並跳過。如果變量不是可能未初始化的,我希望它失敗並轉到catch語句(它創建變量)。
現在它保持失敗並且不斷創建(複製)條目,因爲它永遠不會完成查找數據本身的語句。我想過放一個else if語句來檢查變量是否爲空然後中斷,但它對我也不起作用。
請幫助我的邏輯。
由於您正在讀取可能尚未初始化的變量('DataMaster_MasterCode'),因此應該不會進行編譯。你的代碼*真的*看起來像什麼?另請注意,Java約定是以小寫字母開頭的局部變量名稱。遵循約定使經驗豐富的Java開發人員更容易理解您的代碼並查看真正的問題,而不是絆倒那些並不重要的古怪事物。 – erickson 2011-04-26 21:27:22
*「它繼續執行異常,因爲DataMaster_MasterCode變量可能不會被初始化」* ...不,它不會被初始化。這不是一個例外。 – 2011-04-26 21:28:01
這是我的代碼..它不會運行我發佈的代碼,並直接進入catch部分。我改變了變量的名字,使他們更容易理解它在做什麼,但是除此之外它是我的代碼。我會修復我的命名對話,我只是意識到我正在使用自己的風格(我會閱讀正確的命名)。 – Lostsoul 2011-04-26 21:36:12