-1

VB.NET - Visual Studio 2017 专业版 - Winforms

我正在创建一个 SQL 控件类,我可以在其中简单地通过键入以下内容从另一个表单运行查询:

SQL.ExecQuery("SELECT * FROM ...")

到目前为止,我所拥有的效果很好。但是,当我执行选择查询时,我只会返回记录计数。当我插入、更新或删除时,我没有得到记录计数。

我知道我必须使用ExecuteNonQuery那些,但是我如何将它写入我已经拥有的这个方法中:

Public Sub ExecQuery(Query As String)
    ''Reset Query Statistics
    RecordCount = 0
    Exception = ""

        Try
            SQLCon.Open()

            ''Create SQL Command
            SQLCmd = New SqlCommand(Query, SQLCon)

            ''Load parameters into SQL Command
            Params.ForEach(Sub(x) SQLCmd.Parameters.Add(x))

            ''Clear paramater List 
            Params.Clear()

            ''Execute Command & fill dataset
            SQLDS = New DataSet
            SQLDA = New SqlDataAdapter(SQLCmd)
            RecordCount = SQLDA.Fill(SQLDS)

            SQLCon.Close()
        Catch ex As Exception
            ''Capture error
            Exception = "ExecQuery Error: " & vbNewLine & ex.Message
            MessageBox.Show(Exception, "SQL QUERY FAILED!", MessageBoxButtons.OK, MessageBoxIcon.Error)
            MessageBox.Show(Query)
        Finally
            ''Close Connection
            If SQLCon.State = ConnectionState.Open Then SQLCon.Close()
        End Try

End Sub

有人可以给我一个示例,说明如何将其ExecuteNonQuery合并到此子中,以便获得插入、删除或修改的记录数?

4

1 回答 1

0

这总是发生在我身上 - 我试图弄清楚一些事情,但我做不到,我发布了问题,并在几分钟内找到了答案!(感谢您朝着正确的方向推动!)

从上面的方法,我改变了这个:

''Execute Command & fill dataset
        SQLDS = New DataSet
        SQLDA = New SqlDataAdapter(SQLCmd)
        RecordCount = SQLDA.Fill(SQLDS)

对此:

 ''Execute Command
        RecordCount = SQLCmd.ExecuteNonQuery()

现在一切都按我的预期工作。我没有意识到 execnonquery 根本无法以我使用它的方式处理任何类型的数据集/数据表操作。

于 2017-08-24T05:22:20.560 回答