将数据表从存储过程插入数据库表

时间:2012-02-29 10:08:15

标签: asp.net vb.net ado.net datatable

我有一个数据表,其中包含一些我需要使用存储过程将数据表插入数据库的行。

 For Each row As DataRow In dt.Rows
            cmd.Parameters.Add(New MySqlParameter("@DOWNLOAD_ID", dt.Rows(0)("DOWNLOAD_ID").ToString()))
            cmd.Parameters.Add(New MySqlParameter("@FINALY_FIELDCODE", dt.Rows(0)("FINALY_FIELDCODE").ToString().Replace("|", "").ToString()))
            cmd.Parameters.Add(New MySqlParameter("@UNITS", dt.Rows(0)("UNITS").ToString()))
            cmd.Parameters.Add(New MySqlParameter("@CURRECY_CODE", dt.Rows(0)("CURRENCY_CODE").ToString()))
        Next
        cmd.ExecuteNonQuery()

当我这样做时,我得到一个异常{"Parameter '@DOWNLOAD_ID' has already been defined."}如何摆脱这个异常,我们可以插入带有for循环的数据表。 任何人都可以帮助我

1 个答案:

答案 0 :(得分:1)

您应该创建单独的MySqlCommands并直接执行它们:

Using mysqlConnection = New MySqlConnection(connectionString)
    mysqlConnection.Open()
    For Each row As DataRow In dt.Rows
        Using cmd = New MySqlCommand("StoredProcedureName", mysqlConnection)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add(New MySqlParameter("@DOWNLOAD_ID", dt.Rows(0)("DOWNLOAD_ID").ToString()))
            cmd.Parameters.Add(New MySqlParameter("@FINALY_FIELDCODE", dt.Rows(0)("FINALY_FIELDCODE").ToString().Replace("|", "").ToString()))
            cmd.Parameters.Add(New MySqlParameter("@UNITS", dt.Rows(0)("UNITS").ToString()))
            cmd.Parameters.Add(New MySqlParameter("@CURRECY_CODE", dt.Rows(0)("CURRENCY_CODE").ToString()))
            cmd.ExecuteNonQuery()
        End Using
    Next
End Using