powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Подключение к MySQL через JDBC-ODBC
17 сообщений из 17, страница 1 из 1
Подключение к MySQL через JDBC-ODBC
    #33399742
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Не могу подключиться к MySQL используя JDBC-ODBC.

Использую JDK 1.5, драйвер ODBC для MySQL рабочий, я его использую при работе с Delphi, создан в User DSN.

Текст программы:

import java.sql.*;

public class db{
public static void main(String[] args) throws SQLException, ClassNotFoundException{
String dbUrl = "jdbc:odbc:myodbc1";
String user = "root";
String password = "password";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c = DriverManager.getConnection(dbUrl, user, password);
}
}

Выдается ошибка в выделенной строке с пояснением:
incompatible types
found: java.sql.Connection
required: Connection
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33399759
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл выделить строку:

Connection c = DriverManager.getConnection(dbUrl, user, password);
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400611
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K1RUHAЗабыл выделить строку:

Connection c = DriverManager.getConnection(dbUrl, user, password);

А какой вообще смысл маятся с JDBC/ODBC bridge?... Возьмите нормальный драйвер и работайте.

Кстати,

sun.jdbc.odbc.JdbcOdbcConnection = DriverManager.getConnection(dbUrl, user, password);
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400667
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.Голованов
А какой вообще смысл маятся с JDBC/ODBC bridge?... Возьмите нормальный драйвер и работайте.


Мне это не для работы, а для учебы больше. Это пример из Философия Java, хотя там Эккель использует csv, я решил его немого изменить, чтобы работать с MySQL.

М.Голованов
sun.jdbc.odbc.JdbcOdbcConnection = DriverManager.getConnection(dbUrl, user, password);

import java.sql.*;

public class db{
public static void main(String[] args) throws SQLException, ClassNotFoundException{
String dbUrl = "jdbc:odbc:myodbc1";
String user = "root";
String password = "password";
sun.jdbc.odbc.JdbcOdbcDriver = DriverManager.getConnection(dbUrl, user, password);
}
}

Тоже ошибка: package sun.jdbc does not exist.

Как я понимаю, этот пакет должен быть в JDK по умолчанию?
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400671
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.Голованов
sun.jdbc.odbc.JdbcOdbcConnection = DriverManager.getConnection(dbUrl, user, password);зачем так? это некорректно.
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400696
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ М.Голованов
sun.jdbc.odbc.JdbcOdbcConnection = DriverManager.getConnection(dbUrl, user, password);зачем так? это некорректно.

Пардон, ляпнул не подумавши...

Connection m_Connection;
Driver m_Driver;
String m_dbConnectionURL = "jdbc:odbc:someDSNName";


m_Driver = DriverManager.getDriver( m_dbConnectionURL ) ;
m_Connection = DriverManager.getConnection( m_dbConnectionURL , m_userName, m_password ) ;
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400743
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.Голованов

Пардон, ляпнул не подумавши...

Connection m_Connection;
Driver m_Driver;
String m_dbConnectionURL = "jdbc:odbc:someDSNName";


m_Driver = DriverManager.getDriver( m_dbConnectionURL ) ;
m_Connection = DriverManager.getConnection( m_dbConnectionURL , m_userName, m_password ) ;

Результат, как и в первом случае, несовместимые типы.

Может попробовать создать DSN в System DSN?
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400770
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K1RUHAМожет попробовать создать DSN в System DSN?:) вообще-то, предполагается, что он там есть
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400798
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без разницы.
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400802
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте в начале вызов

DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() );

Если не сработает, тогда будет понятно...
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400823
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.ГоловановДобавьте в начале вызов

DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() );

Если не сработает, тогда будет понятно...

Добавил 1-й строкой. Компилятор на эту строку никак не реагирует, все как прежде.
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33400826
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ K1RUHAМожет попробовать создать DSN в System DSN?:) вообще-то, предполагается, что он там есть

Было создано myodbc1 в User DSN. Создал myodbc2 в System DSN. Однако в лучшую сторону изменений нет.
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33401238
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K1RUHA А.Грасоff™ K1RUHAМожет попробовать создать DSN в System DSN?:) вообще-то, предполагается, что он там есть

Было создано myodbc1 в User DSN. Создал myodbc2 в System DSN. Однако в лучшую сторону изменений нет.

Я же говорил... Ну, просто непонятно, что у вас там. Я скопировал код из работающего старого приложения. Работает до сих пор.

Выкладывайте код, что ли...
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33401244
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот древний код, который работает до сих пор:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
 package  com.xxx.db;

 import  java.util.* ;
 import  java.sql.* ;
 import  java.io.* ;

 import  java.lang.*;

 public   class  DBHandler  extends  java.lang.Object
{

     private  Connection m_Connection ;

     private  Driver m_Driver ;

     private  Properties m_HandlerProperties ;

     private  String m_PropertiesFileName ;

     private  String m_Catalog ;

     private   boolean  m_IsInit ;
    

    /*static final private String DRIVER_CLASS_NAME   = "com.ibm.as400.access.AS400JDBCDriver" ;
    static final private String DB_CON_URL          = "jdbc:as400://66.16.63.51" ;//52
    static final private String USERNAME            = "handy" ;
    static final private String PASSWORD            = "handy" ;*/

    /*static final private String DRIVER_CLASS_NAME   = "org.gjt.mm.mysql.Driver" ;
    static final private String DB_CON_URL          = "jdbc:mysql://208.242.198.33/Transactions";
    static final private String USERNAME            = "root" ;
    static final private String PASSWORD            = "altoids176" ; */

    /*static final private String DRIVER_CLASS_NAME   = "oracle.jdbc.driver.OracleDriver" ;
    static final private String DB_CON_URL          = "jdbc:oracle:thin:@208.242.198.13:1521:ORCL";
    static final private String USERNAME            = "beckmanrenders" ;
    static final private String PASSWORD            = "beckman" ;*/

    /*static final private String DRIVER_CLASS_NAME   = "sun.jdbc.odbc.JdbcOdbcDriver" ;
    static final private String DB_CON_URL          = "jdbc:odbc:HandyTransactions" ;
    static final private String USERNAME            = "" ;
    static final private String PASSWORD            = "" ;*/
    
     static   final   private  String DRIVER_CLASS_NAME   = "CLASSNAME" ;
     static   final   private  String DB_CON_URL          = "DB.CONNECTION.URL" ;
     static   final   private  String USERNAME            = "USERNAME" ;
     static   final   private  String PASSWORD            = "PASSWORD" ;
    
     private  String m_driverClassName =  null  ;
     private  String m_dbConnetctionURL =  null  ;
     private  String m_userName =  null  ;
     private  String m_password =  null  ;
    
    
     static   final   private  String DEFAULT_PROPERTIES_FILE     = "dbtool.properties" ;

     public  DBHandler()
    {
        m_Connection =  null  ;
        m_Driver =  null  ;
        m_Catalog = "" ;
        m_HandlerProperties =  new  Properties () ;
        m_PropertiesFileName = DEFAULT_PROPERTIES_FILE ;
        m_IsInit = false ;
    }

     public  String getPropertiesFileName()
    {
         return  m_PropertiesFileName ;
    }

     public   void  setPropertiesFileName( String fileName )
    {
        m_PropertiesFileName = fileName ;
    }

     public   void  loadProperties() 
    {
         if  ( ( m_PropertiesFileName !=  null  ) && ( m_PropertiesFileName.length() >  0  )  )
        {
           InputStream fin =  null  ;
            try  
           {            
                //m_PropertiesFileName ;
                m_HandlerProperties =  new  Properties() ;
                fin =  new  FileInputStream( m_PropertiesFileName ) ;            
                m_HandlerProperties.load( fin ) ;

                m_driverClassName = m_HandlerProperties.getProperty( DRIVER_CLASS_NAME ) ;
                m_dbConnetctionURL = m_HandlerProperties.getProperty( DB_CON_URL ) ;
                m_userName = m_HandlerProperties.getProperty( USERNAME ) ;
                m_password = m_HandlerProperties.getProperty( PASSWORD ) ;
            }
             catch  ( FileNotFoundException nf )
            {
                System.out.println( "File was not found : " + m_PropertiesFileName ) ;                
            }
             catch  (IOException ioe )
            {
                System.out.println( "Can not read from file : " + m_PropertiesFileName ) ;
            }
            
             finally  
            {
                 try  
                {
                     if ( fin !=  null  )
                        fin.close();
                }
                 catch (IOException e)
                {
                    e.printStackTrace( System.err ) ;
                }
            }
         } 
    }
    
     public   void  init()
    {
        loadProperties() ;
         try 
        {
             if  ( !m_IsInit || m_Connection ==  null  )
            {
                m_IsInit = true ;
                 Class .forName( m_driverClassName ) ;
                m_Driver = DriverManager.getDriver( m_dbConnetctionURL ) ;

                 if  ( m_Driver !=  null  )
                {
                    String drvVersion = m_Driver.getMajorVersion() + "." + m_Driver.getMinorVersion() ;
                    m_HandlerProperties.put( "Version" , drvVersion ) ;

    //                DriverPropertyInfo[] dPropInfo = m_Driver.getPropertyInfo( DB_CON_URL ) ;
                    m_Connection = DriverManager.getConnection( m_dbConnetctionURL, m_userName, m_password ) ;
                    m_Catalog = m_Connection.getCatalog() ;

                }

                System.out.println("Driver Class: " + DRIVER_CLASS_NAME ) ;
                System.out.println("Con URL: " + DB_CON_URL ) ;
            }
        }
         catch  (ClassNotFoundException e1)
        {
            System.out.println( "Error: Driver class can't be found!" ) ;
            System.out.println( "Message: " + e1.getMessage() ) ;
            e1.printStackTrace() ;
        }
        catch (SQLException e2)
        {
            System.out.println( "Error: Driver can't be found!" ) ;
            System.out.println( "Message: " + e2.getMessage() ) ;
            e2.printStackTrace() ;
        }

         catch  (Exception e3)
        {
            System.out.println( "Error: Unknown Exception" ) ;
            System.out.println( "Message: " + e3.getMessage() ) ;
            e3.printStackTrace() ;
        }

   }

    public  Connection getConnection()
   {
         return  m_Connection ;
   }

    public  String getCatalog()
   {
         return  m_Catalog ;
   }

    public   void  destroy()
   {
         try 
        {
             if  (m_Connection !=  null  )
                m_Connection.close() ;
        }
         catch  (SQLException e)
        {
            System.out.println( "Error: can't close the connection" ) ;
            System.out.println( "Message: " + e.getMessage() ) ;
            e.printStackTrace() ;
        }
   }
}

А вот содержимое используемого файла properties:

Код: plaintext
1.
2.
3.
4.
5.
# Name of JDBC driver  class  to be used
CLASSNAME=sun.jdbc.odbc.JdbcOdbcDriver
# Connect String  for  JDBC driver
DB.CONNECTION.URL=jdbc:odbc:CDTransactionDatabase
USERNAME=
PASSWORD=
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33401276
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.Голованов
Программа запустилась, вот что добавил:

import java.sql.*;

public class db{
public static void main(String[] args) throws SQLException, ClassNotFoundException{
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
String dbUrl = "jdbc:odbc:myodbc1";
String user = "root";
String password = "password";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
java.sql.Connection c = DriverManager.getConnection(dbUrl, user, password);
}
}

Похоже что-то с областью видимости. У Вас есть какие-нибудь мысли по этому поводу?
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33401279
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в документации по MySQL Connector/J в примерах не импортируется полный пакет java.sql.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 import  java.sql.Connection;
 import  java.sql.DriverManager;
 import  java.sql.SQLException;

// Notice, do not import com.mysql.jdbc.*
// or you will have problems!

 public   class  LoadDriver {
     public   static   void  main(String[] args) {
         try  {
            // The newInstance() call is a work around for some
            // broken Java implementations

             Class .forName("com.mysql.jdbc.Driver").newInstance();
        }  catch  (Exception ex) {
            // handle the error
        }
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 import  java.sql.Connection;
 import  java.sql.DriverManager;
 import  java.sql.SQLException;

    ...  try  {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");

            // Do something with the Connection

           ....
        }  catch  (SQLException ex) {
            // handle any errors
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }
...
Рейтинг: 0 / 0
Подключение к MySQL через JDBC-ODBC
    #33401289
-pretender-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
K1RUHA М.Голованов
Программа запустилась, вот что добавил:

import java.sql.*;

public class db{
public static void main(String[] args) throws SQLException, ClassNotFoundException{
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
String dbUrl = "jdbc:odbc:myodbc1";
String user = "root";
String password = "password";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
java.sql.Connection c = DriverManager.getConnection(dbUrl, user, password);
}
}

Похоже что-то с областью видимости. У Вас есть какие-нибудь мысли по этому поводу?
прими за правило помещать свои классы в пакеты. избавишься от
многих проблем. от твоей текущей, кстати, тоже скорее всего.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Подключение к MySQL через JDBC-ODBC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]