2014-01-05 105 views
1

我在使用mysql时遇到了问题。看来,当程序运行到这个部分,它不会继续[解决]Class.forName在尝试连接到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

'catch(Exception e){}' - ** AAAARRRRGGGGHHH **。不要吞噬异常,否则你不知道发生了什么......就像这里。 – Mat

+1

严重的是,把'e.printStackTrace();'到catch块,并张贴堆栈跟踪也看到有什么问题.. –

+0

@KubaSpatny还是放弃了追赶完全..我非常罕见的有抓“打印材料”。有用地处理它或GTEO(得到例外)。 – user2864740

回答

2

确保将mysql.jar添加到您的项目中。另外正如注释的评论,不要吞噬你的例外。如果你这样做,你不知道错误或。它可能是ClassNotFoundExceptionSQLException,它们是完全不同的东西。一旦您将ex.printStackTrace()添加到您的catch区块,如果您获得ClassNotFoundException,那么您可能忘记将他mysql.jar导入到您的项目中。如果你得到一个SQLExcpetion,东西要么是不对您的SQL语法或者连接语法


编辑包括JAR

  • 下载.zipthis link
  • 将它解压缩
  • 从您的IDE中,您需要将该文件中的.jar添加到您的库中
  • 在Eclipse
    1. 右键点击你的项目
    2. 选择 - BUIL路径=>配置上的标签库路径
    3. 点击,在顶部
    4. 依序按添加外部JAR
    5. 定位mysqul-connector.java...jar里面的文件下载并选择它
  • 从NetBeans中
    1. 从项目资源管理器中的项目,右键单击Libraries文件夹图标
    2. 选择Add Jar/Folder
    3. 找到从你下载的文件的.jar,并选择它。
  • 如果你想创建一个新的库,你应该采取其他步骤,但只需添加.jar就足够了。

UPDATE

我觉得MySQL.jar自带随NetBeans IDE中。在Libraries文件夹图标

  • 选择

    • 尝试用鼠标右键单击添加库
    • 看看MySQL JDBC驱动程序是在那里。如果是,只需选择它并添加库
  • +0

    谢谢您的评论。我只是GOOGLE了我得到的错误,似乎我需要该JAR文件。但是我不知道哪些JAR文件以及它们放在哪里。 我的代码中的哪一部分我将该mysql.jar。感谢您的回应 –

    +0

    您是否在使用IDE,以及如果您是哪一个? –

    +0

    见我**编辑** –

    3

    如果你有一块形式的代码:

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

    B不被执行,这是一个相当安全的赌注,A是引发某种类型的异常,特别是如果B做它的意思,如果顺序颠倒。

    你的情况:

    catch (Exception e) {} 
    

    被捕捉异常,但绝对什么都不做修复或报告。在最低限度,您应该使用类似System.out.println (e);e.printStackTrace()的报告,以便您可以看到发生了什么。

    0

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

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

    2. 右键单击该文件夹,然后单击添加库。

    3. 从可用库中,单击MySQL JDBC Driver(如果使用MySQL)。

    相关问题