可变数量的插入数据库

Variable number of inserts into database

我正在向负责将数据插入数据库的方法发送 table (GridViewRowCollection)。每一行都将成为数据库中的一行table,它也是用户编写的,所以它可以是 1 行或 100 行。

我知道如何通过串联来实现,但作为用户输入我需要对其进行参数化,而通过参数化进行动态处理我不知道如何开始或从哪里开始。

任何人都可以阐明这个问题吗?

你可以看看 SqlBulkCopy

https://makolyte.com/csharp-how-to-use-sqlbulkcopy-to-do-a-bulk-insert/

如果你要一个一个地做,这就是模式。未显示的是稳健的数据验证或异常处理。您还必须更改参数以满足您的需要,它们显然不会(全部)是长度为 10 的 varchar。这部分是伪代码:

using (SqlConnection con = new SqlConnection("the connection string"))
using (SqlCommand cmd = con.CreateCommand())
{
    cmd.CommandType = CommandType.Text; // assuming not a stored procedure
    
    cmd.CommandText = "INSERT INTO [Your_Table_Name] (val1, val2, etc.) VALUES (@param1, @param2, etc.);"
    
    cmd.Parameters.Add(new SqlParameter("@param1", SqlDbType.VarChar, 10));
    cmd.Parameters.Add(new SqlParameter("@param2", SqlDbType.VarChar, 10));
    //etc.
    
    con.Open();
    
    for (int i = 0; i < row count; i++)
    {
        cmd.Parameters["param 1"].Value = //whatever value from row
        cmd.Parameters["param 2"].Value = //whatever other value from row
        //etc
        
        int numberOfRowsAffected =  cmd.ExecuteNonQuery();
    }
}