У меня есть следующий код, который отлично работает, но DataTable не обновляется ... что я теряю/делаю неправильно?!?Почему мой DataTable не обновляется?
Option Compare Text
Option Explicit On
Imports System
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Windows
Imports System.Windows.Forms
Imports Microsoft.Office
Imports Microsoft.Office.Interop
Public Class Form1
Public txtTo As String = ""
Public txtFrom As String = ""
Public txtSubject As String = ""
Public txtBody As String = ""
Public txtAttachmentID As String = ""
Public txtAttachment As String = ""
Public MsgBoxResult As DialogResult
Public myPath As String = ""
Public dbLeague As String = ""
Public dbSession As String = "3"
Public Sqlstring As String = ""
Public myText As String
Public newLocationRow As KickaboutEmailDataSet.FileLocationsRow
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.LeaguesTableAdapter1.Fill(Me.KickaboutEmailDataSet1.Leagues)
ComboBox1.SelectedIndex = -1
ComboBox2.SelectedIndex = 0
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Dim folderBrowserDialog As New FolderBrowserDialog()
myPath = Environment.SpecialFolder.MyComputer
Me.FileLocationsTableAdapter1.Fill(Me.KickaboutEmailDataSet1.FileLocations)
If File.Exists(myPath & "\Despatch Schedule.txt") Then
myText = ""
Else
myText = "to be "
End If
For Each Dr As DataRow In KickaboutEmailDataSet1.FileLocations.Rows
myPath = Dr.Item(1).ToString
Next
folderBrowserDialog.Description = "Select Folder Where Despatch Schedule File is " & myText & "Stored"
folderBrowserDialog.RootFolder = myPath
folderBrowserDialog.ShowNewFolderButton = True
If folderBrowserDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
myPath = folderBrowserDialog.SelectedPath
Else
Exit Sub
End If
Я написал эти следующие четыре строки с помощью MSDN в моей директиве, и, как я уже говорил, они исполняют только штрафом, но база данных не обновляется < <
newLocationRow = KickaboutEmailDataSet1.FileLocations.NewFileLocationsRow()
newLocationRow.ID = 0
newLocationRow.DESPATCHSCHEDULE = myPath
KickaboutEmailDataSet1.FileLocations.Rows.Add(newLocationRow)
End Sub
End Class
Сначала вы говорите, что DataTable не обновляется, а затем вы говорите, что база данных не обновляется. Это две разные вещи, которые вы имеете в виду? Если вы ожидаете, что добавление строки в DataTable автоматически добавит запись в базу данных, вы должны изменить свои ожидания. DataTable - это только локальный кеш. Чтобы сохранить изменения в базе данных, вы должны вызвать Update на своем адаптере таблицы. – jmcilhinney
Я понимаю, что база данных содержит DataTables, и я понимаю, что до тех пор, пока данные на самом деле не будут записаны/зафиксированы в DataTable, чем база данных не будет обновлена, но я бы подумал, что когда MSDN сообщает мне, как добавить новую строку в A DataTable, что они предоставят вам всю необходимую информацию, но я, очевидно, что-то пропустил, следовательно, мой вопрос. –
Нет, база данных не содержит DataTables. Он содержит таблицы. MSDN продемонстрировала вам, как добавить строку в DataTable, и это именно то, что вы сделали. Если вы затем захотите вставить соответствующую строку в соответствующую таблицу в базе данных, вам необходимо сохранить изменения из DataTable, который является объектом .NET, а не частью базы данных, обратно в базу данных. Как вам уже сказали, вы это сделаете, вызвав Update в своем адаптере data/table. – jmcilhinney