我有一个与此类似的问题,但阅读(接受的)答案并没有给我太多的见解,所以我希望更清楚地说明它并得到更清晰的回复。
我正在尝试将数据行插入表中。我正在使用TableAdapter
我编写的自定义“插入非查询”(它有效,我测试过)来接受一些参数。我对通过 .NET 与数据库进行通信的业务相当陌生,而我所做的可能是设计错误的。我的问题是为什么它是错误的,正确的方法是什么?两者同样重要,IMO。
这是我编写的一些示例 VB 代码:
Dim arraysTableAdapter As New UnitTestsDataSetTableAdapters.ArraysTableAdapter
Try
arraysTableAdapter.InsertArray("Test Array", 2, 1, 2, "Test user")
Catch ex As SqlException
MsgBox("Error occured when trying to add new array." _
& vbNewLine & vbNewLine _
& ex.Message)
End Try
……差不多就是这样。没有引发异常,我的表没有插入新行。一切都是我调用该方法之前的样子InsertArray
。当我在 QueryBuilder 中使用相同的参数测试我的查询时,会在数据库中添加一个新行。
现在,我确实了解这行不通的一些原因。我知道我需要在我的DataSet
(不知道怎么做)中创建并选择一行,以便告诉TableAdapter
它正在向什么添加数据。或者至少我从阅读大量论坛中获得了这种印象。
我真的很想TableAdapter
在某个时候使用,因为它知道.InsertArray
存在并且它知道它喜欢哪些参数。我可以尝试使用
Dim con As New SqlConnection
Dim cmd As New SqlCommand
con.ConnectionString = connString
con.Open()
cmd.CommandText = "INSERT ...... all that jazz"
但对于我喜欢我的代码的干净程度来说,它还不够干净。那么,有什么方法可以按照我的方式做我想做的事情吗?换句话说,我如何使用 a 的简洁结构TableAdapter
与 my 通信DataSet
并在其中放入新行?
提前致谢!