VB.NET Добавление таблицы в базу данных из объекта DataTable - PullRequest
3 голосов
/ 01 июня 2011

Я пытаюсь преобразовать старый код VB6 в VB.NET.Старый код использовал DAO, и теперь я пытаюсь скопировать его в ADO.NET/OleDB.Я сделал некоторые усовершенствования (я думаю ...), но теперь я не могу понять, как добавить объект DataTable в базу данных.

Вот старый код VB6, td - это объект TableDef из DAO:

If fso.FileExists(loc) Then
    Set td = m_db.CreateTableDef("Ratings")
    td.Connect = "Excel 8.0;HDR=Yes;IMEX=2;DATABASE=" & loc
    td.SourceTableName = "Sheet1$"
    m_db.TableDefs.Append td
    bFileNotExists = False
Else
    bFileNotExists = True
End If

Насколько я понимаю, это чтение Sheet1 из файла Excel 'loc' и добавление его в m_db, объект базы данных DAO.Это то, что у меня есть, и, пожалуйста, исправьте меня, если вы видите какие-либо ошибки, поскольку я только начинаю с такого рода вещами -

If fso.FileExists(loc) Then
        oleCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & loc & ";Extended Properties=""Excel 8.0;HDR=Yes;")
        oleCon.Open()
        oleAdapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$]", oleCon)
        oleAdapter.Fill(dt)

        bFileNotExists = False
    Else
        bFileNotExists = True
    End If

Так что вместо TableDef я беру данныеиз того же листа и положить его в объект DataTable (DT).Я надеюсь, что пока это правильно.Теперь мой вопрос - как повторить строку m_db.TableDefs.Append td сверху?Спасибо!

1 Ответ

0 голосов
/ 19 июня 2011

Дело в том, что вам нужно предварительно загрузить 'dt' с конфигурацией в Excel-файле, чтобы TableAdapter сработал. Это насколько я знаю. Вы можете выбрать много путей, в том числе сначала создать столбцы, а затем загрузить строку за строкой или загрузить Excel-лист как сам DataTable и добавить его в DataSet.

Предложения:

  • Начните использовать нотацию программирования CamelCase. Это действительно помогает и предотвращает ошибки.
  • Ознакомьтесь с ADO.NET, например, следуя некоторым учебникам.
  • Отбросьте обработку OleDb, достаточно ADO.NET.
  • Осознайте различия между VB.Net и VB6 и подготовьтесь к изучению более объектно-ориентированного программирования
...