OleDBConnection VS ADODB.Connection

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

OleDBConnection VS ADODB.Connection

Сообщение Loiste » 29.11.2005 (Вт) 9:27

Есть маленькая проблема:

Если я подкючаюсь к базе так:

Код: Выделить всё
Public MainConnection As ADODB.Connection
Public strDbName As String

Public Sub OpenMainConnection()
        strDbName = Application.StartupPath.Remove(Application.StartupPath.Length - 4, 4) + "\db\" + "kfrgteutest.mdb"
        MainConnection = New ADODB.Connection
        MainConnection.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                           "Data Source=" & strDbName)
End Sub


то подключение проходит нормально.

А если так:

Код: Выделить всё
Public MainConnection As OleDb.OleDbConnection
Public strDbName As String

Public Sub OpenMainConnection()

        strDbName = Application.StartupPath.Remove(Application.StartupPath.Length - 4, 4) + "\db\" + "kfrgteutest.mdb"
        Dim myConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & strDbName"
        Dim MainConnection As New OleDb.OleDbConnection
        MainConnection.ConnectionString = myConnString
        MainConnection.Open()

End Sub


Возникает ошибка:

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll

на строчке:

Код: Выделить всё
MainConnection.Open()


Что отладчику не нравится, если вроде все, кроме типов подключений, прописано практически одинаково?

waaad
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 29.11.2005 (Вт) 9:04
Откуда: Санкт-Петербург

Сообщение waaad » 29.11.2005 (Вт) 9:33

Код: Выделить всё
Dim myConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & strDbName"


Кавычки нигде не потерял?

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 29.11.2005 (Вт) 9:45

Если я ставлю кавычки как-то по-другому - отладчик ругается

waaad
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 29.11.2005 (Вт) 9:04
Откуда: Санкт-Петербург

Сообщение waaad » 29.11.2005 (Вт) 9:51

При таком написании строки подключения он у тебя пытается подключится к базе с именем "& strDbName", а не к базе, которая прописана в переменной strDbName. Что не есть хорошо.

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 29.11.2005 (Вт) 10:22

Ну, я переписала строку подключения так:

Код: Выделить всё
Dim myConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= F:\Ксюша\Visual Studio Projects\KFRGTEUTest (25.11.2005)\db\kfrgteutest.mdb"


Но ничего не изменилось

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 29.11.2005 (Вт) 11:02

Loiste писал(а):Ну, я переписала строку подключения так:

Код: Выделить всё
Dim myConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= F:\Ксюша\Visual Studio Projects\KFRGTEUTest (25.11.2005)\db\kfrgteutest.mdb"


Но ничего не изменилось


Провайдера из строки убери. Ибо и без того OleDbConnection :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

waaad
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 29.11.2005 (Вт) 9:04
Откуда: Санкт-Петербург

Сообщение waaad » 29.11.2005 (Вт) 11:09

Что-то все-равно ей строка подключения не нравиться.
К сожалению у меня нет примеров для подключения к Access-у через OleDb.
Но как пишут в умных книжках:
"При использовании объекта OleDbConnection требуется указать драйвер ODBC или имя среды OLEDB. Самым простым путем создания правильной строки соединения является соединение с базой данных в Server Explorer, а затем копирование получившейся строки в текст программы."

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 29.11.2005 (Вт) 11:26

waaad писал(а):Но как пишут в умных книжках:
"При использовании объекта OleDbConnection требуется указать драйвер ODBC или имя среды OLEDB. Самым простым путем создания правильной строки соединения является соединение с базой данных в Server Explorer, а затем копирование получившейся строки в текст программы."


Кстати, а почему бы так и не сделать ?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 29.11.2005 (Вт) 11:34

Можно конечно, напрямую указывать путь, но ведь надо заглядывать в будущее, верно? :) эту программу будут запускать неизвестно с какого компьютера и неизвестно какой там будет путь. Поэтому и применяю переменную, где храниться путь.

waaad
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 29.11.2005 (Вт) 9:04
Откуда: Санкт-Петербург

Сообщение waaad » 29.11.2005 (Вт) 11:40

А кто запрещает использовать переменную?
На сколько я понял, на данный момент у Вас проблемма в правильном подключении к базе. Нужно узнать правильную строку подключения. В этом Вам поможет Server Explorer. А потом уже ее запихивайте в строку подключения, как Вам будет удобно.

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 29.11.2005 (Вт) 11:50

Энивей, я переписала процедуру так:

Код: Выделить всё
Public Sub OpenMainConnection()

        strDbName = Application.StartupPath.Remove(Application.StartupPath.Length - 4, 4) + "\db\" + "kfrgteutest.mdb"
        Dim myConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "
        myConnString = myConnString + strDbName
        Dim MainConnection As New OleDb.OleDbConnection
        MainConnection.ConnectionString = myConnString
        MainConnection.Open()
End Sub



Теперь работает.

Но проблема с адаптером. Наверно опять что-то не так со строкой подключения. Вот, посмотрите, пожалуйста:

Код: Выделить всё
Public Sub Create_OleDbDataAdapter1()

            Dim mySelectText As String = "SELECT * FROM Access ORDER by Login"
        Dim conSTR As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "F:\Ксюша\Visual Studio Projects\KFRGTEUTest (28.11.2005)\db" + ";Integrated Security=SSPI;Initial Catalog=kfrgteutest"
        OleDBDataAdapter1 = New OleDb.OleDbDataAdapter(mySelectText, conSTR)
        OleDBDataAdapter1.MissingSchemaAction = MissingSchemaAction.AddWithKey

        OleDBDataAdapter1.InsertCommand = New OleDb.OleDbCommand("INSERT INTO Access([Group], Login, Pass) VALUES (?, ?, ?)", MainConnection)
        OleDBDataAdapter1.UpdateCommand = New OleDb.OleDbCommand("UPDATE Access SET [Group] = ?, Login = ?, Pass = ? WHERE (ID = ?) AND ([Group] = " & _
      "? OR ? IS NULL AND [Group] IS NULL) AND (Login = ? OR ? IS NULL AND Login IS NUL" & _
        "L) AND (Pass = ? OR ? IS NULL AND Pass IS NULL)", MainConnection)
        OleDBDataAdapter1.DeleteCommand = New OleDb.OleDbCommand("DELETE FROM Access WHERE (ID = ?) AND ([Group] = ? OR ? IS NULL AND [Group] IS NU" & _
        "LL) AND (Login = ? OR ? IS NULL AND Login IS NULL) AND (Pass = ? OR ? IS NULL AN" & _
        "D Pass IS NULL)", MainConnection)

End Sub

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 01.12.2005 (Чт) 16:25

Все в порядке..пока форум не работал, я уже сама все исправила :)


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList  
cron