2014-01-05 2 views
1

У меня проблема с использованием mysql. Кажется, что когда программа работает в этой части, он не продолжает [РЕШИТЬ]Класс.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)  

И я не знаю, что это за ошибки. Может кто-нибудь мне помочь? Благодарю.

BTW, я использую 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 (Исключение e) {}' - ** AAAARRRRGGGGHHH **. Не проглатывайте исключения, иначе вы не знаете, что происходит ... как здесь. – Mat

+1

Серьезно, положите 'e.printStackTrace();' в блок catch и опубликуйте stacktrace, тоже посмотрите, в чем проблема. –

+0

@KubaSpatny Или прервите ловушку полностью .. Я очень редко заразился «печатным материалом». Обращайтесь с ней полезно или GTEO (получите исключение). – user2864740

ответ

2

Обязательно добавьте mysql.jar к вашему проекту. Также, как отмечено в комментарии, не проглатывайте свое исключение. Если вы это сделаете, вы не знаете, что такое ошибка или. Это может быть ClassNotFoundException или SQLException, которые совершенно разные вещи. Как только вы добавите ex.printStackTrace() в ваш блок catch, если вы получите ClassNotFoundException, вы, вероятно, забыли импортировать его mysql.jar в проект.Если вы получаете SQLExcpetion, что-то либо неправильно с синтаксисом SQL или вашего соединения синтаксиса


EDIT включить Jar

  • Скачать .zip из this link
  • разархивировать
  • Из вашей IDE вам необходимо добавить .jar, который находится в этом файле, в ваши библиотеки
  • От Затмения
    1. правой кнопкой мыши на проецировании
    2. Select - Buil Path => Настройка Путь
    3. Нажмите на вкладку Библиотеки, в верхней
    4. Cick на Добавление внешнего Jar
    5. найдите mysqul-connector.java...jar внутри файла, который вы загрузили и выберите его
  • от Netbeans
    1. Из вашего проекта в проводнике проекта, щелкните правой кнопкой мыши значок папки Libraries
    2. Выберите Add Jar/Folder
    3. Найдите .jar из загруженного файла и выберите его.
  • Если вы хотите создать новую библиотеку, вы должны предпринять другие шаги, но достаточно добавить .jar.

UPDATE

Я думаю, что MySQL.jar приходит поставляется с Netbeans IDE.

  • Попробуйте щелкнуть правой кнопкой мыши на значок папки Libraries
  • Выберите Добавить библиотеку
  • Смотрите, если MySQL JDBC Driver находится там. Если это так, просто выберите его и добавьте библиотеку
+0

Спасибо за комментарий. Я просто искал ошибки, которые я получаю, и кажется, что мне нужен этот JAR-файл. Однако я не знаю, какие файлы JAR и где их разместить. Какую часть моего кода я поставлю в ту mysql.jar. Спасибо за ответ –

+0

Вы используете IDE, и какой из них, если вы есть? –

+0

См. Мой ** EDIT ** –

3

Если у вас есть кусок кода вида:

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

и B не это довольно безопасная ставка, что A поднимает исключение какого-либо типа, особенно, если B делает то, что он предназначен, если заказ отменен.

В вашем случае:

catch (Exception e) {} 

ловит исключение, но не делает абсолютно ничего, чтобы исправить или сообщить об этом. На минимум, вы должны сообщить об этом чем-то вроде System.out.println (e); или e.printStackTrace(), чтобы вы могли видеть, что происходит.

0

Вы должны добавить MySQL.jar, который поставляется с IDE NetBeans.

  1. Внутри создаваемого проекта есть папка с библиотеками.

  2. Щелкните правой кнопкой мыши папку и выберите Добавить библиотеку.

  3. Из доступных библиотек щелкните по MySQL JDBC Driver (если используется MySQL).

Смежные вопросы