[英]Connection to Mysql
我有此代碼:
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;
}
}
當我在main方法中編寫它時,它工作得很好,但是當我在一個新類中編寫它,然后在main方法中實例化它時,它不起作用。 我有這些錯誤。
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)
這是Main類:
package FirstServlet;
public class Main {
public static void main(String[] args) {
Connect c = new Connect();
c.connect();
}
}
謝謝,問題確實是班級的名稱,我還有另一個問題。 我有我創建的這種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無法解決。
因為,您的類名稱是FirstServlet
包下的Connection
。 請選擇其他類別名稱或在類別中使用包名稱。
com.mysql.jdbc.Connection.Connection conn =
(com.mysql.jdbc.Connection.Connection)
DriverManager.getConnection(url, user, passwd);// Use fully qualified name
還有一點,請始終遵循Java的命名約定。 package
名稱應全部為小寫字母。
因為您有一個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);
但這不是一個好方法,不推薦
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.