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中的多个语句