2014-10-03 127 views
-1

我一直在多次運行此代碼,並且java一直拋出java.sql.SQLException參數索引超出範圍(1>參數數量爲0),I認爲它錯誤的SELECT * FROM CARD查詢,我在這裏做錯了什麼?爲什麼java拋出參數索引超出範圍SQLerror

@EventHandler 
public void onJoin(PlayerJoinEvent event){ 
    Player player = event.getPlayer(); 
    openConnection(); 
    try{ 
     PreparedStatement sql = connection.prepareStatement("SELECT * FROM `Cards` WHERE `UUID`=?;"); 
     sql.setString(1, player.getUniqueId().toString()); 
     ResultSet rs = sql.executeQuery(); 
     if(!rs.next()){ 
      PreparedStatement sql1 = connection.prepareStatement("INSET INTO `Cards` (`UUID`, `username`, `name`, `race`, `tribe`, `gender`, age`, `desc`, `channel`, `ooc`) VALUES(?,?,?,?,?,?,?,?,?,?);"); 
      sql1.setString(1, player.getUniqueId().toString()); 
      sql1.setString(2, player.getName()); 
      sql1.setString(3, "NONE"); 
      sql1.setString(4, "NONE"); 
      sql1.setString(5, "NONE"); 
      sql1.setString(6, "NONE"); 
      sql1.setString(7, "0"); 
      sql1.setString(8, "NONE"); 
      sql1.setString(9, "RP"); 
      sql1.setString(10, "1"); 
      sql1.execute(); 
      sql1.close(); 
     } 
    }catch(SQLException e){ 
     e.printStackTrace(); 
    }finally{ 
     closeConnection(); 
    } 
} 
+0

*其中*是否拋出異常?您有兩條SQL語句 - 其中只有一條可能與此處相關。你不應該「認爲它出錯」 - 你應該有一個堆棧跟蹤。你應該能夠編寫一個方法,以最簡單的方式證明這一點 - 鑑於我們需要一個模式,它不太可能是一個簡短但完整的程序,但你至少可以把它釘在比你更少的位置這裏。 – 2014-10-03 08:03:29

+1

下一個問題:INSET!= INSERT。 – 2014-10-03 08:03:48

+0

你不讀取你的ResultSet ... – Benvorth 2014-10-03 08:06:06

回答

5
(`UUID`, `username`, `name`, `race`, `tribe`, `gender`, age`, `desc`, `channel 

上缺少age報價?

+0

如何刪除所有這些不必要的引號 – wvdz 2014-10-03 08:08:17