Member 11856456 Ответов: 2

Как сделать оператор for each для Строковой базы данных SQL с помощью оператора sqlbulkcopy


Теперь я использую свои базы данных sql через ручные строковые соединения вместо того, чтобы подключать их через vb.net мастер баз данных. Я нашел этот метод более достаточным при попытке перейти между базами данных. то, что я пытаюсь сделать, - это установить соединение с выбранным мной набором данных и запустить инструкцию bulkcopy для импорта информации excel.

Dim sqlconn As New SqlConnection(MySQLstring)
      Dim sqladaptor = New SqlDataAdapter("select * from" + "[" + TreeView1.SelectedNode.Text.ToString + "]", sqlconn)
      Dim sql As String = "select * from" + "[" + TreeView1.SelectedNode.Text.ToString + "]"
      Dim sqlcmd As SqlClient.SqlCommand
      sqlcmd = New SqlClient.SqlCommand(sql, sqlconn)
      Dim dt As New DataTable
      Dim ds As New DataSet
      sqladaptor.Fill(dt)

      For Each column In ds.Tables(TreeView1.SelectedNode.Text.ToString).Columns

          sqlBulkCopy.ColumnMappings.Add(column.ColumnName, If(String.IsNullOrEmpty(column.ColumnName), " ", column.ColumnName))


      Next


когда я запускаю свой код, я получаю это сообщение об ошибке:
Дополнительная информация: ссылка на объект не установлена на экземпляр объекта. Это сообщение появляется в " ds.Таблицы(Элемента Управления Treeview1.SelectedNode.Текст.Метод toString).Столбцы"

Я не знаю, как получить доступ к набору данных при подключении к sql вручную.
как я могу написать инструкцию, используя строку подключения sql к базе данных?

Что я уже пробовал:

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

NotPolitcallyCorrect

Научитесь пользоваться отладчиком. Ваш набор данных всегда равен нулю, потому что вы ничего с ним не делаете. И ваш запрос не будет работать. А текст - это уже строка, какую возможную пользу, по-вашему, даст вам ToString на строке? Как я уже говорил вам раньше, в интернете должны быть тысячи примеров, на которые вы можете посмотреть, вам просто нужно пойти посмотреть.

2 Ответов

Рейтинг:
0

Richard MacCutchan

Ссылка на объект не установлена на экземпляр объекта.

Это означает, что вы пытаетесь использовать ссылочную переменную, которая никогда не была инициализирована. Единственный способ определить, какой из них является ошибочным, - это использовать отладчик для пошагового просмотра вашего кода.


Рейтинг:
0

Member 11856456

Ричард я понял, в чем проблема. Я ссылался на недавно созданную таблицу данных, которую изменил, чтобы ссылаться на набор данных. вот модификация кода, это был просто дополнительный шаг.

 Dim dt As New DataTable
Dim ds As New DataSet
sqladaptor.Fill(ds, TreeView1.SelectedNode.Text)