Can';t创建SQL语句-Java

Can';t创建SQL语句-Java,java,mysql,sql,Java,Mysql,Sql,很好地为游戏编写登录检查器,并从C#切换到java。问题是我正在使用旧代码作为exmaple,但在从connection创建语句时一直遇到这个问题。我得到“找不到createStatement()符号”。是否有一种新的方式来执行SQL语句,或者是否存在其他错误 这是源代码 import java.sql.*; public class SQLCheck { public Connection con; public void connect(){ String

很好地为游戏编写登录检查器,并从C#切换到java。问题是我正在使用旧代码作为exmaple,但在从connection创建语句时一直遇到这个问题。我得到“找不到createStatement()符号”。是否有一种新的方式来执行SQL语句,或者是否存在其他错误

这是源代码

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();
    }
}

您不应该为自己的类重复使用名称
连接
。当您声明类型为
Connection
的对象时,您使用的不是SQL对象,而是您自己的对象

因此,当您声明变量
con
时,您是在声明一个
tanksgrid.Connection
,而不是
java.sql.Connection
。演员也一样。当您调用
con.createStatement()
时,您编写的类
Connection
没有这样的方法

编辑:


对于源代码更新,代码仍然存在一个挥之不去的问题:您需要捕获
SQLException
可能由
createStatement()
引发的异常。(另外,该方法需要返回一个布尔值。)Eclipse没有发现源代码存在任何其他问题。

命名冲突。编译器认为
con
引用了您自己的
连接


将类的名称从Connection更改为MyConnection或类似的名称,或者将con对象引用为
java.sql.Connection con
如果您这样做,还可以将类型转换从
(连接)
更改为
(java.sql.Connection)

,即使在创建了一个新类之后,它仍然显示“con.createStatement()找不到”是的,可能会重命名类“TGConnection”或类似的内容?那么,您可以在原始帖子中更新源代码吗?这个问题肯定存在于您的原始代码中。是的,我也重命名了它,新文件和所有东西。更新上面的源代码。@Seandidk:检查我更新的答案,看看是否有帮助。我检查了Eclipse,所以如果编译器仍然认为<>代码> CRATATESTATEATION()/代码>不是一个符号,那么您可能会遇到其他问题(比如过时的编译错误,或者在Eclipse中有时会发生的事情)。或者至少使用安全协议来验证用户。好的,所有问题都解决了。事实上,两个答案都有帮助。是我忘记了从OpenID用户那里读到的“抛出SQLException”,你可能想远离它。+1:注意,你可以使用完全限定名(
java.sql.Connection
)。仍然没有。不过这次有一个更好的编译错误。“初始化:删除:C:\Users\Seand\Documents\NetBeansProjects\TanksGrid\build\build-jar.properties deps jar:更新属性文件:C:\Users\Seand\Documents\NetBeansProjects\TanksGrid\build\build-jar.properties将1个源文件编译为C:\Users\Seand\Documents\NetBeansProjects\TanksGrid\build\classes C:\Users\Seand\Documents\NetBeansProjects\Tanks\NetBeansProjects\TanksGrid\src\tanksgrid\SQLCheck.java:36:未报告的异常java.sql.SQLException;必须捕获或声明为抛出语句s=con.createStatement();1错误“好的,是我添加“抛出SQLException”失败