为游戏编写登录检查器,并从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();
}
}
答案 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} }