有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java类。forName在尝试连接到MySQL数据库时不起作用

我在使用mysql时遇到问题。似乎当程序运行到这个部分时,它不会继续[已解决]

        try{
        //Load the Driver Class
        Class.forName("com.mysql.jdbc.Driver");

我认为这部分代码有问题。因为我尝试了这个,JOptionPane弹出:

        try{
        JOptionPane.showMessageDialog(null, "Ok!");
        //Load the Driver Class
        Class.forName("com.mysql.jdbc.Driver");

但是,当我这样编写代码时,什么都没有发生:

        try{
        //Load the Driver Class
        Class.forName("com.mysql.jdbc.Driver");
        JOptionPane.showMessageDialog(null, "Ok!");

有什么建议吗?谢谢

顺便说一句,这是我的全部计划

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    String user = userName.getText();
    final String URL = "jdbc:mysql://localhost:3306/videorental";

    if(user.equals("")){
        JOptionPane.showMessageDialog(null, "Fields should not be empty", "Error", JOptionPane.ERROR_MESSAGE);
    }
    else{
        try{
        //Load the Driver Class
        Class.forName("com.mysql.jdbc.Driver");
        //Create the connection using the static getConnection method
        JOptionPane.showMessageDialog(null, "Connecting to database");
        Connection con = DriverManager.getConnection(URL, "root", "");
        //Create statement to execute the SQL statement
        JOptionPane.showMessageDialog(null, "Creating a statement");
        Statement stmt = con.createStatement();
        //Check the username
        ResultSet rs = stmt.executeQuery("select * from 'user_tbl' where user_id = '"+user+"' ");
        if(rs.next()){
            String uname = rs.getString("user_id");
            if(user.equals(uname)){
                JOptionPane.showMessageDialog(null, "Thank you!");
            }
            else{
                JOptionPane.showMessageDialog (null, "You are not registered.");
            }
        }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }     


}                                  

所以我试着放e.printStackTrace(),对不起,我真的是一个使用mySQL的新手。这就是结果。。。[已解决]

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at user.loginFrame.jButton1ActionPerformed(loginFrame.java:113)
    at user.loginFrame.access$000(loginFrame.java:14)
    at user.loginFrame$1.actionPerformed(loginFrame.java:48)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)    

我不知道这些错误是什么。有人能帮我吗?谢谢

顺便说一句,我正在使用netbeans作为IDE

感谢大家的帮助,但出现了一个新问题,它说我有MYSQLSYntaxError

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your   SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user_tbl' where user_id = '12345678'' at line 1

共 (3) 个答案

  1. # 1 楼答案

    如果您有表格的一段代码:

    try {
        A();
        B();
    } catch (Exception e) {}
    

    而且B没有被执行,这是一个相当安全的赌注,A会引发某种类型的异常,尤其是,如果B执行的是相反的顺序

    就你而言:

    catch (Exception e) {}
    

    正在捕获异常,但完全不做任何修复或报告。至少,你应该用System.out.println (e);e.printStackTrace()这样你就能看到发生了什么

  2. # 2 楼答案

    你应该添加MySQL。Netbeans IDE附带的jar

    1. 在您创建的项目中有一个Libraries文件夹

    2. 在文件夹上单击鼠标右键,然后单击“添加库”

    3. 从可用库中,单击MySQL JDBC驱动程序(如果使用MySQL)

  3. # 3 楼答案

    确保将mysql.jar添加到项目中。正如评论中提到的,不要接受你的例外。如果你这样做,你就不知道错误或错误是什么。它可以是ClassNotFoundExceptionSQLException,这是完全不同的东西。一旦将ex.printStackTrace()添加到catch块中,如果得到一个ClassNotFoundException,您可能忘记了将mysql.jar导入到项目中。如果得到一个SQLExcpetion,则说明SQL语法或连接语法有问题


    编辑以包含jar

    • this link下载.zip
    • 解开它
    • 从IDE中,需要将该文件中的.jar添加到库中
    • 来自日食
      1. 右键点击你的项目
      2. 选择-Buil Path=>;配置路径
      3. 单击顶部的“库”选项卡
      4. Cick on Add External Jar
      5. 在下载的文件中找到mysqul-connector.java...jar,然后选择它
    • 来自Netbeans
      1. 在项目资源管理器中的项目中,右键单击Libraries文件夹图标
      2. 选择Add Jar/Folder
      3. 从下载的文件中找到.jar,然后选择它
    • 如果你想创建一个新的库,你还应该采取其他一些步骤,但是仅仅添加.jar就足够了

    更新

    我认为MySQL.jar是随Netbeans IDE一起提供的

    • 尝试右键单击Libraries文件夹图标
    • 选择添加库
    • 看看是否有MySQL JDBC驱动程序。如果是,只需选择它并添加库即可