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

标签 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();
            }
        }
      }

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

最佳答案

如果移动 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();
            }
        }
    }
}

关于一次执行多个SQL命令,请看这个链接: Multiple statements in single SqlCommand

关于c# - 一次将datagridview的所有数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10556556/

相关文章:

c# - 检测文件打开

c# - 如何在 C# 代码而不是 XAML 中创建超链接

用于创建新用户的 SQL Server 脚本

sql - SQL 中的无序结果

c# - 如何访问组框中的文本框?

c# - 时间限制 C# 中的方法

c# - 使用自动属性显式实现接口(interface)

sql - 根据另一个表的组合键删除

c# - 打开文件所在位置

c# - 检测外部进程的窗口是否闪烁