Sql server 为什么我的数据表没有被更新?

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

我有以下代码可以完美执行,但是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为指导编写了接下来的四行代码,正如我所说的,它们执行得很好,但是数据库不会得到更新只要创建一个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