Вот мое общее понимание базы данных из того, что я до сих пор читал: Сохранить / Обновить / Удалить в существующий ранее созданный файл, который связывается для формирования через SQL.
Вот что я пытаюсь сделать -У меня есть готовая таблица данных в форме со всеми определенными столбцами.Как только приложение закрыто или некоторые функции запущены, мне нужно, чтобы эти данные были сохранены / обновлены в SQL (локально).Когда приложение будет открыто, мне нужно сохранить все эти данные.
До сих пор я НЕ нашел ни одного решения для этого, где бы ни упоминалось о привязке к существующему файлу.Когда я работал с Excel, ячейки передачи данных должны были быть определены и указаны в форме для населения.
Я предполагаю, что при использовании базы данных из VB.NET таблица со значениями может быть автоматически сохранена / загружена / обновлена.Однако это только мое предположение, поскольку я никогда раньше не работал с SQL.Я не уверен, что мне нужно управлять созданным файлом базы данных со всеми значениями, а затем связать их с таблицей данных.Например, ячейка DataTable XX для столбца базы данных XX.
Вот что я сделал до сих пор, я создал базу данных и добавил в свой проект.Я пробовал несколько кодов и продолжаю получать Dataset Empty, хотя в таблице есть данные. Я также пытался использовать DataTable, но пока ничего не получалось.
Пожалуйста, подскажите, что я делаю неправильно, также будет полезна дополнительная информация о базах данных.Как и в предыдущем случае, я знаю, как работает привязка, когда существует файл.Но создание и управление меня смущает, так как я продолжаю думать, что должен быть файл привязки.
Dim connetionString As String
Dim sqlCnn As SqlConnection
Dim sqlCmd As SqlCommand
Dim adapter As New SqlDataAdapter
Dim ds As New DataSet
Dim sql As String
connetionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Data_Ant.mdf;Integrated Security=True;Connect Timeout=30"
sql = "SELECT BN FROM DataTable" ' BN is my column name and DataTable is the name of my Table where data gets populated. This is also confusing to me How does it know which value is what? Is there are space/word/characters requirements?
' adapter.TableMappings.Add("DataTable", sql)
If ds.Tables.Count > 0 Then
sqlCnn = New SqlConnection(connetionString)
Try
sqlCnn.Open()
sqlCmd = New SqlCommand(sql, sqlCnn)
adapter.SelectCommand = sqlCmd
adapter.Update(ds)
adapter.Dispose()
sqlCmd.Dispose()
sqlCnn.Close()
Catch ex As Exception
MsgBox("Can not open connection !" & vbCrLf & Err.Description)
End Try
ElseIf ds.Tables.Count = 0 Then
MsgBox("Empty data")
End If
End Sub
Код, который я использую для создания / сохранения базы данных.Как и в предыдущем случае, все столбцы / форматы предварительно сделаны, загружены.
Dim connetionString As String
Dim sqlCnn As SqlConnection
Dim sqlCmd As SqlCommand
Dim adapter As New SqlDataAdapter
Dim ds As New DataSet
Dim sql As String
connetionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Data_Ant.mdf;Integrated Security=True;Connect Timeout=30"
sql = "Select BN FROM DataTable"
adapter.TableMappings.Add("BN", sql)
If DataTable.RowCount > 0 Then
sqlCnn = New SqlConnection(connetionString)
Try
sqlCnn.Open()
sqlCmd = New SqlCommand(sql, sqlCnn)
adapter.SelectCommand = sqlCmd
adapter.Update(ds, "BN")
adapter.Dispose()
sqlCmd.Dispose()
sqlCnn.Close()
Catch ex As Exception
MsgBox("Can not open connection !" & vbCrLf & Err.Description)
End Try
ElseIf DataTable.RowCount = 0 Then
MsgBox("Empty data")
End If
End Sub
См. Дополнительную информацию ниже:
- Столбцы / формат таблицы данных структурированы для визуального представления.
- При запуске пользователя база данных приложения может быть пустой / может содержать значения.
- Когда пользователь запускает определенную функцию Закрытие Значения приложения сохраняются и только значения.Если бы я использовал MS Access, я бы структурировал ту же таблицу / значения и сопоставил бы ее со значениями формы.Значения формы приходят из внешнего источника, а Format / Qty всегда известен.Надеюсь, это поможет мне лучше взглянуть на мою проблему.Возможно, SQL не правильный выбор для меня?Нужно ли строить SQL перед манипулированием значениями.
ОБНОВЛЕНИЕ: Я избавился от ошибки Invalid Object.Стол должен был быть создан 1-й, как я изначально думал.Тем не менее, мой DataSet всегда появляется как ПУСТОЙ, когда я пытаюсь сохранить ... Ячейки содержат данные BN как "1,2, ....). Даже если удалить I, если логика" Сохранить "таблица Сохранить и загрузить выходит пустымЧто-то действительно загружается, потому что, когда я пытаюсь добавить BN, он говорит мне обязательный бла-бла-бла (другая проблема)
КОД:
Private Sub SaveData()
Dim connetionString As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Data_Ant.mdf;Integrated Security=True;Connect Timeout=30"
Dim sql As String = "SELECT BN FROM DataTable_d"
Dim sqlCnn As SqlConnection
Dim sqlCmd As SqlCommand
Dim adapter As New SqlDataAdapter
Dim ds As New DataSet()
adapter.TableMappings.Add("BN", sql)
If ds.Tables.Count > 0 Then
sqlCnn = New SqlConnection(connetionString)
Try
sqlCnn.Open()
sqlCmd = New SqlCommand(sql, sqlCnn)
adapter.SelectCommand = sqlCmd
adapter.Update(ds, "BN")
adapter.Dispose()
sqlCmd.Dispose()
sqlCnn.Close()
Catch ex As Exception
MsgBox("Can not open connection !" & vbCrLf & Err.Description)
End Try
ElseIf ds.Tables.Count = 0 Then
MsgBox("Empty data")
End If
End Sub
ОБНОВЛЕНИЕ: У меня все работает, но я могусохранить несколько строк ..... Неужели можно использовать некоторую помощь