Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > JDBC траблы


Автор: GriKo 11.9.2004, 23:44
ну вобщем вот:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified...

как бы это мне его исправить-то?
искал вот так:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Автор: Kurt 12.9.2004, 01:17
Нельзя ли подробнее?
Именно на ЭТОЙ строчке вылетает в Exception?

Автор: d_k 12.9.2004, 13:29
Не используй бридж а пользуй родные дрова SQL сервера. Тогда все должно быть ОК. Да и код бы посмотреть не мешало...

Автор: LSD 12.9.2004, 13:32
Возможно ошибка в настройках ODBC.

Автор: Kurt 12.9.2004, 13:54
Код
Не используй бридж а пользуй родные дрова SQL сервера

Нууу.. это спорный вопрос. Например, если нужно, чтоб в "БД" Access работало?
GriKo
На всякий случай, вот одна из моих первых проб JDBC-ODBC-бриджа (все проверено и работает):
Код

import java.sql.*;

public class AllMainElementAccessProba{

public static void main(String[] args){

String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=G:\\baza.mdb";
String user = "";
String password = "";
Connection dbConnection;

try{
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (Exception ex){
 System.out.println("Error in loading JDBC-ODBC bridge!");
 return;
};

try{
 dbConnection = DriverManager.getConnection(url,user,password);
}
catch (Exception ex){
 System.out.println("Error in connecting to database!");  
 return;
};

try{
 Statement stmt = dbConnection.createStatement();

 System.out.println("Creating table..");  
 stmt.execute("create table TableFromJava (c1 integer, c2 varchar(100))");
 System.out.println("Done");

 System.out.println("Inserting into table..");
 for (int i=1; i<=100000; i++){
  stmt.execute("insert into TableFromJava values ("+i+",\'YES!!\')");
 if (i%1000==0){
  System.out.println(i/1000+"% completed!");
 };
 };
 System.out.println("Done");
 
 System.out.println("Selecting from table..");
 ResultSet rs = stmt.executeQuery("select * from TableFromJava");
 while (rs.next()){
  System.out.println("c1="+rs.getInt(1)+"   c2="+rs.getString(2));
 }
 System.out.println("Done");

 System.out.println("Deleting from table..");
 stmt.execute("delete from TableFromJava");
 System.out.println("Done");

 System.out.println("Dropping table..");
 stmt.execute("drop table TableFromJava");
 System.out.println("Done");
}
catch (Exception ex){
 System.out.println("Error in executing query!");
 System.out.println(ex.getMessage());    
}

try{
dbConnection.close();
}
catch (Exception ex){
 System.out.println("Error in disconnecting!");  
 return;

}

return;
}
}

Автор: GriKo 12.9.2004, 16:51
Код
try{
               Connection con = DriverManager.getConnection(dbUrl,user,password);
               Statement sta = con.createStatement();
               ResultSet res = sta.executeQuery("SELECT name, address, telephone" +
                                               "FROM storage");
               con.close();
           }catch(Exception ex){System.out.println(ex.getStackTrace);
           return;
           }


StackTrace: [Ljava.lang.StackTraceElement;@184ec44

всё выше этого вроде ничего не выбрасывает...

Автор: Domestic Cat 13.9.2004, 15:20
Если ты используешь бридж, то вроде его нужно прописывать как ODBC сорс в
виндовс registry.

Автор: Kurt 13.9.2004, 15:39
Domestic Cat
О таком не разу не слышал. Все вышеприведенное (мной) работает без всяких регистраций.
Вот если через DSN все делается, тогда да, нужна регистрация.

Автор: GriKo 13.9.2004, 21:42
Благодарю всех за помощь, Kurt, в отдельности... Проблема была в кривых руках...

Автор: Kurt 13.9.2004, 23:56
smile.gif
Рад за тебя.
Цитата
Проблема была в кривых руках...

Бывает.
Удачи!

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