Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > JDBC


Автор: snorkee 19.4.2005, 20:42
Разбираюсь с JDBC и уже весь день долблюсь об error-messages

Вобщем суть в том, что я поставил себе mySQL настроил всё это дело и запустил, поставил MySql JConnector пути к необходимым папкам с классами тож прописал.

Теперь пытаюсь вот такой программкой проверить соединение - создать таблицу в имеющейся базе test:

Код



import java.sql.*;

     
public class CreateMainboards {

    public static void main(String args[]) {
          
        String url = "jdbc:mysql://localhost:3306/test";
        Connection con;
        String createString;
        createString = "create table MAINBOARDS " +
                            "(MB_NAME varchar(32), " +
                            "SUP_ID int, " +
                            "PRICE float, " +
                            "SALES int, " +
                            "TOTAL int)";
        Statement stmt;
    
        try {
            Class.forName("com.mysql.jdbc.Driver");

        } catch(java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: "); 
            System.err.println(e.getMessage());
        }

        try {
            con = DriverManager.getConnection(url, 
                                     "denis", "1");
    
            stmt = con.createStatement();                            
              stmt.executeUpdate(createString);
    
            stmt.close();
            con.close();
    
        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
    }
}






и вижу :

SQLException: No suitable driver

smile

Автор: Domestic Cat 19.4.2005, 20:46
Коннектор должен быть на CLASSPATHе.

Автор: snorkee 19.4.2005, 20:50
ну да, я добавил в classpath папку с коннектором

я через все эти ошибки прошёл и мануалы все какие мог перечитал smile уже вроде всё сделал, что надо и всё-равно

Автор: Domestic Cat 19.4.2005, 20:51
Надо не папку, а сам jar, что-то типа set CLASSPATH= %CLASSPATH%;C:\jdbc\MySqlConnector\connector.jar

Автор: snorkee 19.4.2005, 21:02
та же проблема. значит наверное сам где то виноват.

Автор: LSD 19.4.2005, 21:10
ИМХО дело не в CLASSPATH, т.к. драйвер находится (иначе было бы ClassNotFoundException). Такая ошибка бывает если ни один из зарегистрированных драйверов не опознал URL.
snorkee
Приведи полный стек ошибки.

Автор: Domestic Cat 19.4.2005, 21:17
Цитата(LSD @ 19.4.2005, 12:10)
Такая ошибка бывает если ни один из зарегистрированных драйверов не опознал URL.


Согласен. Дело в урл.

Автор: snorkee 19.4.2005, 21:20
а на самом то деле он у меня и ClassNotFound выдаёт

ClassNotFoundException: com.mysql.jdbc.Driver
SQLException: No suitable driver

ЗЫ: я сейчас ещё одну статеёку на эту тему нашёл - просмотрю её сейчас, может что-то упустил. Если у кого-нибудь раньше совет умный появится, то тоже хорошо smile
Я всё таки сегодня добью этот JDBC! smile

Автор: LSD 19.4.2005, 21:24
Цитата(snorkee @ 19.4.2005, 22:20)
а на самом то деле он у меня и ClassNotFound выдаёт

Тогда дело в CLASSPATH, исправь его в первую очередь и перепиши пример так:
Код
try
{    
  Class.forName("com.mysql.jdbc.Driver");    
}
catch(java.lang.ClassNotFoundException e)
{
  e.printStackTrace();
  System.exut(-1);
}

Автор: snorkee 19.4.2005, 21:25
всё разобрался,получилось!! фуф smile
Добавлено @ 21:26
2LSD (Online)

Ага, там было с путями немного напутано smile
Добавлено @ 21:27
всем спасибо за советы smile

Автор: polosatij 20.4.2005, 11:31
у меня вопрос такой, если в уже на эту тему заговорили:

в каком *.jar находится "com.mysql.jdbc.Driver" smile

заранее пасиба =)

Автор: Zandr 20.4.2005, 12:50
Вот в этом:
http://dev.mysql.com/downloads/connector/j/3.1.html

Автор: smolbars 23.10.2006, 16:11
Оживляю данную тему.
Ситуация: пытаюсь прикрутить к jbuilder 7 jconnector mysql. Делаю все вроде по интсрукции:
сам коннектор (jar в classpath) - для коммандной строки. Для jbuilder воткнул его в свойства проекта по умолчанию (до того пытался прописать жоско) - не работает в любом случае. 

Вот код программы - просто для проверки соединения
Код

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class LoadDriver {
    public static void main(String[] args) {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Driver is loading");
        } catch (Exception ex)
        {
          System.out.println("Error when loading driver " + ex.getMessage());
        }
 }
}

Компиляет без ошибок но при выполнении ругается 
java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at LoadDriver.main(LoadDriver.java:18)
Что делаю не так: mysql поставил (хотя он тут не особо играет роль - я пока дрова регистрирую - версия 5.0), дрова в classapth и у jbuilder прописал. Где ошибка? smile - уже 3 дня - а результат - 0

Автор: batigoal 23.10.2006, 21:45
Уверен, что он ругается не на этот участок кода. Какой-то другой класс в проекте использует эту либу.

Автор: JUncle 23.10.2006, 21:52
Цитата(smolbars @  23.10.2006,  16:11 Найти цитируемый пост)
java.lang.NoClassDefFoundError: org/aspectj/lang/Signature

Интересно. AspectJ вылез.
Если вы не используете аспектные примочки, вырубите AspectJ в своем билдере (говорю навскидку, т.к. с билдерами дела не имею).
Если используете, значит неправильно используете.
Ну или либа AspectJ в classpath каким то образом попала. Ищите, в общем  smile 

Автор: smolbars 24.10.2006, 16:35
А не просветите как отрубить этот Aspectj от jbuilder - он там в виде библиотеки? А то в инете как то найти не смог а сам jbuilder и слов таких не знает. В свойствах прокте может жить - не исключаю.
Что интересно пытался компилить вышеописанный класс (и только его) через javac - та же ругань что и при выполнении.
Classpath никакого Aspectj  не содержит  smile 

Автор: Metal_Heart 24.10.2006, 16:55
Я б сначала поиском прошелся по всем исходникам проекта на наличие слова  "aspectj"
Не исключено, что какой-нить глубокий класс спрашивает этого "aspectj".

Автор: LSD 25.10.2006, 10:24
Цитата(smolbars @  24.10.2006,  17:35 Найти цитируемый пост)
Что интересно пытался компилить вышеописанный класс (и только его) через javac - та же ругань что и при выполнении.

1. Он нормально компилируется, безо всяких ошибок.
2. Компилятор никогда не выдает ошибку NoClassDefFoundError, это ошибка времени исполнения, а не компиляции.
3. JBuilder поставляется без AspectJ, так что это ты сам что-то намудрил.

Автор: smolbars 26.10.2006, 08:23
2LSD 
1 - да действительно все компилируется и из командной строки - я просмотрел
2,  3 - проблема не в jbuilder а мускулевском драйвере - aspectj юзает он.
Буду думать аднако
Дрова я брал с www.dev.mysql.com - версия 3.13

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)