2011-03-17 81 views
3

那麼編寫遊戲的登錄檢查器,然後從C#切換到java。問題是我使用較舊的代碼作爲示例,但通過從連接創建語句繼續遇到此問題。我得到「createStatement()符號未找到」。有沒有新的方法來做SQL語句或者是否有其他的錯誤?無法創建SQL語句 - Java

這裏是源代碼。

import java.sql.*; 

public class SQLCheck { 

    public Connection con; 
    public void connect(){ 
     String host = "somewhereoutthere"; 
     String username = "stuff"; 
     String pass = "haclmolg"; 
     String db = "users"; 

     try{ 
      Class.forName("com.mysql.jdbc.Driver"); 
      String connectionUrl = "jdbc:mysql://"+host+"/"+db+"?"; 
      con = (Connection) DriverManager.getConnection(connectionUrl,username,pass); 
      System.out.println("Server: Connected to MYSQL"); 
     } catch(SQLException e){ 
      System.out.println("Server: SQL EXECEPTION: " + e.toString()); 
     } catch (ClassNotFoundException cE){ 
      System.out.println("Server: Class not found: " + cE.toString()); 
     } 
    } 
    boolean checkLogin(String userName, String password){ 
     boolean correct = false; 

     Statement s = con.createStatement(); 
    } 
} 
+0

作爲一個側面說明,如果這永遠得不到少數用戶,請考慮轉換爲OpenID,或者至少使用安全協議對用戶進行身份驗證。 – jprete 2011-03-17 19:23:37

+0

好吧都修好了。其實這兩個答案都有幫助。這是我忘記「拋出SQLException」 – seandidk 2011-03-17 19:32:04

+0

從我讀取的OpenID用戶,你可能會想遠離它。 – 2011-03-17 19:34:12

回答

7

您不應該重複使用名稱Connection爲您自己的班級。當你聲明Connection類型的對象時,你不使用SQL,而是使用你自己的。

因此,當您聲明變量con時,您聲明的是tanksgrid.Connection而不是java.sql.Connection。演員也一樣。當你撥打con.createStatement()時,你寫的類Connection沒有這樣的方法。

編輯:

與源更新,仍然存在與代碼一個揮之不去的問題:你將需要捕捉的SQLException可能通過createStatement()拋出。 (此外,該方法需要返回一個布爾值。)Eclipse沒有看到任何其他源代碼問題。

+0

甚至創建一個新類之後,它仍然顯示「con.createStatement()無法找到」 – seandidk 2011-03-17 19:23:27

+0

是的,也許重命名類「TGConnection」或類似的規定? – MattC 2011-03-17 19:24:12

+0

然後你可以更新原始文章中的源代碼嗎?這個問題肯定存在於你的原始代碼中。 – jprete 2011-03-17 19:25:37

2

命名衝突。編譯器認爲con指的是你自己的Connection類。

無論是從連接到MyConnection的或類似的東西,改變你的類的名稱或引用CON對象java.sql.Connection con;如果你這樣做,也改變從(Connection)的類型轉換爲(java.sql.Connection)

+0

+1:注意你可以使用完全限定名('java.sql.Connection')。 – jprete 2011-03-17 19:26:52

+0

還沒有。雖然這次有一個更好的編譯錯誤。 「init: 刪除:C:\ Users \ Seand \ Documents \ NetBeansProjects \ TanksGrid \ build \ built-jar.properties deps-jar: 更新屬性文件:C:\ Users \ Seand \ Documents \ NetBeansProjects \ TanksGrid \ build \ built-jar.properties 將1個源文件編譯爲C:\ Users \ Seand \ Documents \ NetBeansProjects \ TanksGrid \ build \ classes C:\ Users \ Seand \ Documents \ NetBeansProjects \ TanksGrid \ src \ tanksgrid \ SQLCheck.java: 36:未報告的異常java.sql.SQLException;必須被捕獲或聲明爲拋出 聲明s = con.createStatement(); 1錯誤 「 – seandidk 2011-03-17 19:29:41

+0

好吧,我只是沒有添加」throws SQLException「 – seandidk 2011-03-17 19:30:39