连接到Mysql

时间:2014-02-28 16:19:56

标签: java mysql jdbc

我有这段代码:

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无法解决。

2 个答案:

答案 0 :(得分:0)

因为,Connection包下的您的班级名称为FirstServlet。请选择不同的班级名称或使用班级名称。

  com.mysql.jdbc.Connection.Connection conn = 
     (com.mysql.jdbc.Connection.Connection) 
      DriverManager.getConnection(url, user, passwd);// Use fully qualified name

另一点,始终遵循Java的命名约定。 package名称应该都是小写字母。

答案 1 :(得分:0)

因为您的自定义类名称Connectioncom.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);

    但这不是好办法,不推荐