【发布时间】:2014-02-03 22:44:44
【问题描述】:
我有以下完美执行的代码,但 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。
-
我了解数据库包含 DataTables,并且我意识到在数据实际写入/提交到 DataTable 之前,数据库不会更新,但我会认为当 MSDN 告诉我如何向数据表添加新行,他们会给你所有必要的信息,但我显然遗漏了一些东西,因此我的问题。
-
不,数据库不包含 DataTables。它包含表格。 MSDN 向您展示了如何向 DataTable 添加行,而这正是您所做的。如果您希望在数据库中的相应表中插入相应的行,那么您必须将来自 DataTable(它是一个 .NET 对象而不是数据库的一部分)的更改保存回数据库。正如您已经被告知的那样,您可以通过在数据/表适配器上调用 Update 来做到这一点。
标签: sql-server vb.net visual-studio-2010