Sql server 为什么我的数据表没有被更新?
我有以下代码可以完美执行,但是DataTable没有得到更新。。。我错过了什么/做错了什么Sql server 为什么我的数据表没有被更新?,sql-server,vb.net,visual-studio-2010,Sql Server,Vb.net,Visual Studio 2010,我有以下代码可以完美执行,但是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 Impo
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为指导编写了接下来的四行代码,正如我所说的,它们执行得很好,但是数据库不会得到更新只要创建一个DataAdapter实例(如果使用Sql Server,则为SqlDataAdapter)并调用Update。。。可能您已经有了一个可用的DataAdapter,因为您似乎正在使用类型化数据集…首先您说DataTable没有更新,然后您说数据库没有更新。它们是两种不同的东西,你是什么意思?如果希望向DataTable中添加一行将自动向数据库中添加一条记录,则必须修改期望值。DataTable仅为本地缓存。要保存对数据库的更改,必须在表适配器上调用Update。我知道数据库包含DataTables,并且我意识到,在数据实际写入/提交到DataTable之前,数据库不会更新,但我本以为,当MSDN告诉我如何向数据表添加新行时,他们会为您提供所有必要的信息,但我显然遗漏了一些内容,因此我提出了问题。不,数据库不包含数据表。它包含表。MSDN向您展示了如何将行添加到数据表中,这正是您所做的。如果希望在数据库的相应表中插入相应的行,则必须将DataTable中的更改保存回数据库,DataTable是.NET对象,不是数据库的一部分。正如已经告诉您的那样,您可以通过在数据/表适配器上调用Update来实现这一点。现在我对是否有类型化或非类型化的数据集感到困惑:-(!!!我昨天在MSDN页面上查看时假设我确实有一个类型化的数据集,但今天早上一直在阅读此页面……这似乎很简单,我的解决方案资源管理器中确实有一个XSD数据集,所以我有一个非类型化的数据集吗?!我的解决方案资源管理器:KAemail MyProject app.config ClassDiagram1.cd Form1.vb KickaboutEmail.vb KickaboutEmailDataset.xsd Settings.vb类型化数据集是从您的xsd文件生成的…如果在解决方案探索中展开KickaboutEmailDataset.xsd节点,您可以看到生成的类我将使用VS2013 Express和SqL Server 2013 Express从头开始这项工作,以查看我是否能够理解谢谢你的帮助,我很可能会在新项目中使用代码的基础,所以我希望它能在我了解更多的时候派上用场!!!我确实认为我必须找到其他tham MSDN的演练,如果你知道你在做什么,它们可能会很好,但对于学习者来说,它们很糟糕!!!
newLocationRow = KickaboutEmailDataSet1.FileLocations.NewFileLocationsRow()
newLocationRow.ID = 0
newLocationRow.DESPATCHSCHEDULE = myPath
KickaboutEmailDataSet1.FileLocations.Rows.Add(newLocationRow)
End Sub
End Class