簡體   English   中英

連接到Mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM