无法创建SQL语句 - Java

时间:2011-03-17 19:15:52

标签: java mysql sql

为游戏编写登录检查器,并从C#切换到java。问题是我使用旧代码作为例子,但是通过从连接创建语句来继续解决这个问题。我得到“找不到”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();
    }
}

2 个答案:

答案 0 :(得分:7)

您不应该为自己的班级重复使用名称Connection。当您声明Connection类型的对象时,您没有使用SQL,您正在使用自己的。

因此,当您声明变量con时,您声明的是tanksgrid.Connection,而不是java.sql.Connection。演员也一样。当你致电con.createStatement()时,你写的班级Connection没有这样的方法。

修改

使用源代码更新时,代码仍然存在问题:您需要捕获SQLException可能引发的createStatement()。 (此外,该方法需要返回一个布尔值。)Eclipse没有看到源的任何其他问题。

答案 1 :(得分:2)

命名冲突。编译器认为con指的是您自己的Connection类。

将类的名称从Connection更改为MyConnection或类似名称或将con对象引用为java.sql.Connection con;如果这样做,还要将类型转换从(Connection)更改为{{1} }