Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Не могу вручную подключиться к MSSQL в JSF-приложе


Автор: ZMaximI 20.8.2007, 16:58
Добрый день!

Помогите, пожалуйста, решить проблему:

среда разработки Sun Java Studio Creator 2 - если использовать компоненты для работы с БД, проблем нет, но как подключиться к MSSQL 2005 не используя компоненты ...., ???

использую следующий код подключения:

Код

String db_connection = new String("jdbc:microsoft:sqlserver://bdcn:1433;DatabaseName=student;SelectMethod=Cursor");
DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
String user_name = new String("student");
String passw = new String("studo");
dbConnection = DriverManager.getConnection(db_connection,user_name,passw);


ругается, что не нажодит - "com.microsoft.jdbc.sqlserver.SQLServerDriver", нет у него такого драйвера ...
как работает через компоненты - ума не приложу..  smile 

Подскажите, пожалуйста, как написать коннект, как подключить нужный дравер, НО без ODBC ??

Спасибо.

Автор: Maksym 20.8.2007, 18:39
пакет с com.microsoft.jdbc.sqlserver.SQLServerDriver положить в classpath

Автор: ZMaximI 21.8.2007, 17:48
я уже куда их только не ложил, результат один и тот же :

"Exception Details: java.lang.NoSuchMethodError 
  dataBase.ConnectionDB.connection_DB()Ljava/sql/Connection;
"

Автор: Maksym 21.8.2007, 18:13
Цитата(ZMaximI @  21.8.2007,  17:48 Найти цитируемый пост)
java.lang.NoSuchMethodError 

о, это уже больше информации... а какая версия у тебя драйвера?
возможно, в твоей версии этого метода и правда нет.. 
1. посмотри, есть ли метод
2. если нет - скачай свежий драйвер

Автор: ZMaximI 21.8.2007, 18:27
коннект вроде получается, но, вот насчет "ResultSet rs = prepStmt.executeQuery();"  я очень сомневаюсь.

Код

            String db_connection = new String("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BeautySalon;SelectMethod=Cursor");
            DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
            String user_name = new String("sa");
            String passw = new String("vbhfdthibyf_Max");
            Connection dbConnection = DriverManager.getConnection(db_connection,user_name,passw);
            
            String selectStatement = "SELECT * FROM Users";
            PreparedStatement prepStmt = dbConnection.prepareStatement(selectStatement);
            ResultSet rs = prepStmt.executeQuery();
            prepStmt.close();
            dbConnection.close();


подскажите, пожалуйста, как правильно получить набор данных из определенной таблицы ?
как получить данные из конкретного столбца ? ...

Спасибо.

Автор: Zamuta 21.8.2007, 19:38
ZMaximI, 
Цитата
подскажите, пожалуйста, как правильно получить набор данных из определенной таблицы ?


После 
Код

ResultSet rs = prepStmt.executeQuery();

Пишем:
Код

type a;
 while(rs.next()){
               a = rs.getType("имя столбца" или int номер столбца);
            }


Подробнее читать http://javagu.ru/portal/dt?last=false&provider=javaguru&SecID=GURU_SECTION_80697

Автор: ZMaximI 22.8.2007, 08:46
СПАСИБО, большое, просто супер ресурс ! 
я примерно так и делаю, но не получается, может действительно проблема в драйвере ... он у меня версии 1.0 - самый первый, а SQL Server 2005. Подскажи, пожалуйста, где можно взять свежий драйвер, просто так будет быстрее ?

Спасибо.

Автор: Maksym 22.8.2007, 10:57
ZMaximI
Последняя стабильная версия http://www.microsoft.com/downloads/details.aspx?familyid=6d483869-816a-44cb-9787-a866235efc7c&displaylang=en, насколько я вижу. Есть еще http://www.microsoft.com/downloads/details.aspx?familyid=f914793a-6fb4-475f-9537-b8fcb776befd&displaylang=en, но это Community Technology Preview.

Автор: ZMaximI 22.8.2007, 14:50
HELP!

ПОМОГИТЕ, пожалуйста, я уже в полной растерянности :  smile  smile  smile 

Код

public String connection_DB() 
    {
        String UserName = "";
        String db_connection = null;
        Connection dbConnection = null;
        try
        {
            db_connection = new String("jdbc:sun:sqlserver://localhost;DatabaseName=BeautySalon;SelectMethod=Cursor");
            DriverManager.registerDriver(new com.sun.sql.jdbc.sqlserver.SQLServerDriver());
            String user_name = new String("sa");
            String passw = new String("pass");
            dbConnection = DriverManager.getConnection(db_connection,user_name,passw);
            
            Statement stmt = dbConnection.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM Users");
            while(rs.next())
            {
                UserName = UserName + "0";
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
            //UserID = UserID+"NO!";
        }
        return UserName;
    }


конечно глупая проверка на наличие записей .....
получается, что ResultSet пустой, хотя в БД ТОЧНО есть данные....
как их достать, ума не дам


Спасибо.

Добавлено через 1 минуту и 35 секунд
Код

UserName = rs.getString("UserName");


НИЧЕГО не получает

Автор: Zamuta 22.8.2007, 17:36
ZMaximI, если тебе нужно получить данные из столбца UserName, то делаешь так
Код

public String connection_DB() 
    {
        String UserName = null;
        String db_connection = null;
        Connection dbConnection = null;
        try
        {
            db_connection = new String("jdbc:sun:sqlserver://localhost;DatabaseName=BeautySalon;SelectMethod=Cursor");
            DriverManager.registerDriver(new com.sun.sql.jdbc.sqlserver.SQLServerDriver());
            String user_name = new String("sa");
            String passw = new String("pass");
            dbConnection = DriverManager.getConnection(db_connection,user_name,passw);
            
            Statement stmt = dbConnection.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT `UserName` FROM Users;");
            while(rs.next()) {
                UserName = rs.getString("UserName");
                System.out.println("UserName :" + UserName);
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
            //UserID = UserID+"NO!";
        }
        return UserName;
    }

Автор: hamsterKSU 22.8.2007, 17:47
во первых надо исправить твой код
Код

db_connection = new String("jdbc:microsoft:sqlserver://localhost;DatabaseName=BeautySalon;SelectMethod=Cursor");
//вот это и есть загрузка драйвера
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");


Добавлено через 2 минуты и 4 секунды
он ведь работает с MSSQL 2005 надо их драйвер! насколько я понимаю

Добавлено через 2 минуты и 32 секунды
или JDBC-ODBC bridg юзать

Автор: ZMaximI 22.8.2007, 18:30
все равно 0
я использую драйвер, который был в среде разработки, он точно работает, т.к. через компоненты Creator'а к базе подключаюсь, но мне нужно вручную это делать.

самое обидное, никаких ругательств, типа все ок ..

Автор: hamsterKSU 22.8.2007, 18:33
если у тебя DriverManager.getConnection не выкинул exception то знач точно нормально все. знач грабли в запросе.

Автор: ZMaximI 22.8.2007, 18:41
ты понимаешь, я специально допускаю ошибку в "db_connection = new String("jdbc:microsoft:sqlserver://localhost;DatabaseName=BeautySalon;SelectMethod=Cursor");
"
и все равно не ругается

Добавлено через 46 секунд
пишу не localhost, а l_calhost, например

Автор: hamsterKSU 23.8.2007, 12:05
поставь DriverManager.setLogStream(System.out); тогда ты увидишь какой драйвер он загрузил и каким драйвером пытается открыть соединение.

Автор: ZMaximI 23.8.2007, 17:26
Всем спасибо, проблема была в драйвере - все работает .

Добавлено через 2 минуты и 1 секунду
УРА!

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