一次将datagridview的所有数据插入数据库

Man*_*tam 6 c# sql-server winforms

我有一个datagridview,它由各种操作和用户对数据的操作创建.我想立即将gridview的所有数据插入数据库,我知道我可以尝试类似这样的代码:

for(int i=0; i< dataGridView1.Rows.Count;i++)
    {
        string StrQuery= @"INSERT INTO tableName VALUES (" + dataGridView1.Rows[i].Cells["ColumnName"].Value +", " + dataGridView1.Rows[i].Cells["ColumnName"].Value +");";

      try
      {
        using (SqlConnection conn = new SqlConnection(ConnString))
        {
            using (SqlCommand comm = new SqlCommand(StrQuery, conn))
            {
                conn.Open();
                comm.ExecuteNonQuery();
            }
        }
      }
Run Code Online (Sandbox Code Playgroud)

但是每次插入记录时创建新连接是否公平?数据网格可能包含很多行......有没有办法一次性将所有数据传递到服务器并在sql中循环以插入所有数据?

小智 16

如果移动for循环,则不必进行多个连接.只需快速编辑代码块(完全不正确):

string StrQuery;
try
{
    using (SqlConnection conn = new SqlConnection(ConnString))
    {
        using (SqlCommand comm = new SqlCommand())
        {
            comm.Connection = conn;
            conn.Open();
            for(int i=0; i< dataGridView1.Rows.Count;i++)
            {
                StrQuery= @"INSERT INTO tableName VALUES (" 
                    + dataGridView1.Rows[i].Cells["ColumnName"].Text+", " 
                    + dataGridView1.Rows[i].Cells["ColumnName"].Text+");";
                comm.CommandText = StrQuery;
                comm.ExecuteNonQuery();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

至于一次执行多个SQL命令,请查看此链接: 单个SqlCommand中的多个语句