gpt4 book ai didi

java - 连接到Mysql

转载 作者:行者123 更新时间:2023-11-30 00:36:53 25 4
gpt4 key购买 nike

我有这个代码:

package FirstServlet;

import java.beans.Statement;

import java.sql.DriverManager;
import java.sql.ResultSet;
import com.mysql.jdbc.ResultSetMetaData;


public class Codb{

public static void connect() {
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://" + "localhost:3306/bd1";
String user = "root";
String passwd = "root";
Connection conn = (Connection) DriverManager.getConnection(url, user, passwd);
java.sql.Statement state =((java.sql.Connection) conn).createStatement();
ResultSet result = ((java.sql.Statement) state).executeQuery("SELECT * FROM consomateur");
ResultSetMetaData resultMeta = (ResultSetMetaData) result.getMetaData();
System.out.println("\n**********************************");
for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print("\t" + resultMeta.getColumnName(i).toUpperCase() + "\t *");
System.out.println("\n**********************************");
while(result.next()) {
for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print("\t" + result.getObject(i).toString() + "\t |");
System.out.println("\n---------------------------------");
}
result.close();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}

当我在主方法中编写它时,它工作得很好,但是当我在一个新类中编写它,然后在主方法中实例化它时,它不起作用。 我有这些错误。

java.lang.ClassCastException: com.mysql.jdbc.Connection cannot be cast to FirstServlet.Connection
at FirstServlet.Connect.connect(Connect.java:23)
at FirstServlet.Main.main(Main.java:16)

这是主类:

package FirstServlet;


public class Main {

public static void main(String[] args) {
Connect c = new Connect();
c.connect();
}
}

谢谢,问题确实是类(class)名称,我还有另一个问题。我创建了这个 servlet 的方法,我想要做的是让用户输入登录名和密码进行连接。检查用户名和密码的方法是这样的:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

Codb c = new Codb();
c.connect();

Statement state =conn.createStatement();

ResultSet result = (ResultSet) state.executeQuery("SELECT * FROM consomateur");

ResultSetMetaData resultMeta = (ResultSetMetaData) result.getMetaData();


String us= resultMeta.getColumnName(1);
String pass= resultMeta.getColumnName(2);
String username=us;
String password=pass;
String un=request.getParameter("username");
String pw=request.getParameter("password");
String msg=" ";
if(un.equals(username) && pw.equals(password)){
msg="Hello "+ un + " your login is sucess";

}
else{
msg="Hello "+un + " your login is unsucess";
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<font siez='6' color=red>"+ msg+ "</font>");
}

}

但是“Statement state =conn.createStatement();”行带有红色下划线,错误为 conn 无法解析。

最佳答案

因为您有一个 Connection 作为自定义类的名称,它与 com.mysql.jdbc.Connection 发生冲突。这是有问题的行:

Connection conn = (Connection) DriverManager.getConnection(url, user, passwd);

这里 Java 不知道它是哪个Connection。所以要么:

  • 将自定义 Connection 类的名称(强烈推荐)更改为其他名称。

  • 或者将上面的行更改为这样:

    com.mysql.jdbc.Connection.Connection conn = (com.mysql.jdbc.Connection.Connection) DriverManager.getConnection(url, user, passwd);

    但这不是好方法,也不推荐

关于java - 连接到Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com