Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Подключение к MySQL через JDBC-ODBC / 17 сообщений из 17, страница 1 из 1
25.11.2005, 12:45
    #33399742
K1RUHA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
Добрый день.

Не могу подключиться к 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
25.11.2005, 12:48
    #33399759
K1RUHA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
Забыл выделить строку:

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

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

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

Кстати,

sun.jdbc.odbc.JdbcOdbcConnection = DriverManager.getConnection(dbUrl, user, password);
...
Рейтинг: 0 / 0
25.11.2005, 16:28
    #33400667
K1RUHA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
М.Голованов
А какой вообще смысл маятся с 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
25.11.2005, 16:29
    #33400671
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
М.Голованов
sun.jdbc.odbc.JdbcOdbcConnection = DriverManager.getConnection(dbUrl, user, password);зачем так? это некорректно.
...
Рейтинг: 0 / 0
25.11.2005, 16:37
    #33400696
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
А.Грасо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
25.11.2005, 16:53
    #33400743
K1RUHA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
М.Голованов

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

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

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

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

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

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

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

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

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

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

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

Код: 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
26.11.2005, 00:07
    #33401276
K1RUHA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
М.Голованов
Программа запустилась, вот что добавил:

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
26.11.2005, 00:12
    #33401279
K1RUHA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
И в документации по 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
26.11.2005, 00:32
    #33401289
-pretender-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к MySQL через JDBC-ODBC
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Подключение к MySQL через JDBC-ODBC / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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