简体   繁体   English

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

[英]Insert datatable into a database table from a stored procedure

I have a datatable with some rows I need to insert that datatable in to database using a stored procedure. 我有一个带有一些行的数据表,我需要使用存储过程将该数据表插入数据库。

 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()

When i do this I got an exception {"Parameter '@DOWNLOAD_ID' has already been defined."} How to get rid of this exception and can we insert the datatable with out for loop. 当我这样做时,我得到了一个异常{"Parameter '@DOWNLOAD_ID' has already been defined."}如何摆脱这个异常,我们是否可以插入数据表而没有for循环。 Can any one help me 谁能帮我

You should create separate MySqlCommands and execute them directly: 您应该创建单独的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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM