Связь с MSSQLServer

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

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

Vijon
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 10.05.2006 (Ср) 17:19

Связь с MSSQLServer

Сообщение Vijon » 01.07.2006 (Сб) 16:42

В следующем коде

Dim DBaseConnection As New System.Data.SqlClient.SqlConnection

DBaseConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;" & _
"database=sqlPersonalverwaltung;server=mySQLServer"

Dim ds As New DataSet

Dim adapter As New SqlClient.SqlDataAdapter("SELECT * FROM tblartikel", DBaseConnection)

adapter.Fill(ds, "tblartikel")


ошибка в последней команде.

Что бы это могло быть? Вроде, делаю все по науке. Или я чего-то не указал в установках для ConnectionString?

Спасибо.

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 01.07.2006 (Сб) 19:55

Для начала попробуй так
Код: Выделить всё
Dim DBaseConnection As New System.Data.SqlClient.SqlConnection("Persist Security Info=False;Integrated Security=SSPI;" & _
"database=sqlPersonalverwaltung;server=mySQLServer")


Вместо

Код: Выделить всё
Dim DBaseConnection As New System.Data.SqlClient.SqlConnection

DBaseConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;" & _
"database=sqlPersonalverwaltung;server=mySQLServer"


и неплохо было бы написать что за ощибку пишет.

Vijon
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 10.05.2006 (Ср) 17:19

Сообщение Vijon » 01.07.2006 (Сб) 21:34

Нет, к сожалению не помогает.

Ошибка выглядит так: "В файле system.data.dll возникло необрабатываемое исключение типа 'System.Data.SqlClient.SqlException' "

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 02.07.2006 (Вс) 13:53

я конечно могу ошибаться, но по моему адаптер должен заполнять дататейбл через рекордсет
хотя может я и ошибаюсь

по крайней мере вот такой код у меня работает:
Код: Выделить всё

Dim DA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
Dim DT As DataTable = New DataTable
DB = New ADODB.Connection
RS = New ADODB.Recordset
grdStajer.Rows.Clear()
DB.CursorLocation = ADODB.CursorLocationEnum.adUseClient
DB.Open("DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & SQLIP & ";PORT=" & SQLPort & ";DATABASE=knowledge;UID=" & SQLLogin & ";PWD=" & SQLPass & "; OPTION=3")

RS.Open("select foto 'Фото', fio 'ФИО', daterojd 'Дата рожд.', datepriem 'Дата приема', doljn 'Должность', tiprab 'Тип работника', sklad 'Место работы', inst 'Инструктор', tel 'Телефон', viddopys 'Допуск к работе' from stajer order by fio", DB, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

DA.Fill(DT, RS)
grdStajer.DataSource = DT
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Vijon
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 10.05.2006 (Ср) 17:19

Сообщение Vijon » 02.07.2006 (Вс) 14:21

Я попробую, конечно... Мне важно, чтобы оно работало. Но, по идее, ADODB и SqlClient - это совершенно разные классы, и работать они должны независимо друг от друга.

Базу данных нужно регистрировать в ОДБЦ, так я понимаю?..

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 02.07.2006 (Вс) 16:34

Vijon писал(а):Я попробую, конечно... Мне важно, чтобы оно работало. Но, по идее, ADODB и SqlClient - это совершенно разные классы, и работать они должны независимо друг от друга.

Базу данных нужно регистрировать в ОДБЦ, так я понимаю?..


вообще как написано на сайте мс, если ты используешь SqlConnection, то одбц к ней уже привязано, те только нужно сервер указать
а если ADOConnection, то придется указать драйвер одбс (правда в моей студии ADOConnection почему та нету :( )
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Vijon
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 10.05.2006 (Ср) 17:19

Сообщение Vijon » 02.07.2006 (Вс) 20:58

У меня работает следующий код...

Dim DA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter

Dim DT As DataTable = New DataTable

Dim DB As New ADODB.Connection

Dim RS As New ADODB.Recordset

DB.CursorLocation = ADODB.CursorLocationEnum.adUseClient

DB.Open("file name=" & "d:\EigeneDateien\VisualStudioProjects\MyProject\link.udl")

RS.Open("select * from tblartikel", DB, ADODB.CursorTypeEnum.adOpenStatic,

ADODB.LockTypeEnum.adLockOptimistic)

DA.Fill(DT, RS)


При этом базу данных нужно зарегистрировать в ОДБЦ и, разумеется, подключить библиотеку АДО.

...А вообще, конечно, что-то здесь неправильно. Зачем тогда нужны специальные классы для прямой связи с источниками данных из SQLServer?

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 02.07.2006 (Вс) 23:54

не ты не понял
Адо подключать нужно обязательно, а вот создавать DSN не нужно.
У тебя ошибка вылетала при попытке заполнить датасет, но если ты открыл соеденение с сервером и и выполнил SqlCommand, то датасет заполнится автоматом. То есть метод фил выполнять не нужно (он нуже для заполнения дататэйбл)
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 03.07.2006 (Пн) 9:45

Vijon

надо проверить:
1)существование сервера
2) права на выборку

хотя ДатаАдаптер сам ооткрывает конекшн, но попробуйте перед строкой
Код: Выделить всё
Dim adapter As New SqlClient.SqlDataAdapter("SELECT * FROM tblartikel", DBaseConnection)

открыть конекшн самостоятельно

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



вероятно ошибка еще в строке подключения, вот как она выглядит у меня
Код: Выделить всё
"packet size=4096;integrated security=SSPI;data source=MyServer;persist security info=False;initial catalog=MyData"


где MyServer - MSSQL Server
MyData - база данных

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 03.07.2006 (Пн) 11:30

adapter.Fill(ds, "tblartikel")
В ds нет таблицы с именем "tblartikel"

Сделай так
Dim DBaseConnection As New System.Data.SqlClient.SqlConnection

DBaseConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;" & _
"database=sqlPersonalverwaltung;server=mySQLServer"

Dim ds As New DataTable

Dim adapter As New SqlClient.SqlDataAdapter("SELECT * FROM tblartikel", DBaseConnection)

adapter.Fill(ds)

Или добавь в ДатаСет таблицу с именем tblartikel

Vijon
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 10.05.2006 (Ср) 17:19

Сообщение Vijon » 04.07.2006 (Вт) 16:22

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

Попробую все ваши советы, и с открытием Коннекшена и с предварительным созданием таблицы.

...Хотя в последнем я, честно говоря, сомневаюсь. Если таблицы в датасете нет, то она должна быть автоматически создана. Во всяком случае, у меня всегда происходило именно так.


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

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

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

    TopList  
cron