问题描述
我有一个一般性问题,但尚未找到任何答案。我认为提出这个问题很重要,这样我就知道如何构造整个应用程序,因此我从一开始就处在正确的轨道上。
我认为在一个查询命令中添加多行是实用/高效的。下面的代码一次在5列中添加3行和5个值。
另请参阅表格中的此图像:
我的问题是。该表稍后将具有100,000列,我正在考虑例如一次添加10行。现在想象一下,这个cmdstring
将非常长。
我的问题就是。当我在一个查询中添加大量信息时,这样做还行吗? (这是最快的方法还是应该以其他方式执行以下代码?)
谢谢!
void addMultipleRowWithValuessql()
{
String cmdstring = "INSERT INTO DateTimes(DateTime,F1,F2,G1,G2) " +
"VALUES" +
"('201005011715','1',2,'3','4')," +
"('201005011730','5',6,'7','8')," +
"('201005011745','9',10,'11','12');";
using (sqlConnection conn = new sqlConnection(GetConnectionString()))
{
using (sqlCommand comm = new sqlCommand(cmdstring))
{
try
{
comm.Connection = conn;
conn.open();
int i = comm.ExecuteNonQuery();
if (i != 0)
{
MessageBox.Show(i + "Rows Added");
}
}
catch (sqlException ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
static private string GetConnectionString()
{
return "Data Source=(LocalDB)\\MSsqlLocalDB;AttachDbFilename=C:\\Users\\andre\\source\\repos\\TestDatabaseCreation\\DatabaseTest.mdf;Integrated Security=True;Connect Timeout=30";
}
解决方法
他们称其为批量插入,此处的链接将带您进入一个可以解释的漂亮示例。 Bulk Insert In SQL Server From C#
,我正在查看此链接,该链接还显示了如何在一个事务中添加多行。 https://docs.microsoft.com/en-us/azure/azure-sql/performance-improve-use-batching
我的问题是,这是否是batch insert
的有效且好的方法?
还是如果我在一个事务中添加10,000行和VALUES例如200列,那么此代码是否还会像我的原始文章一样涉及大量的解析?
只需确认一下即可。该代码确实值得一提。
void addMultipleRowWithValuesSQL()
{
List<string> dbOperations = new List<string>();
dbOperations.Add("INSERT INTO DateTimes(DateTime,F1,F2,G1,G2) VALUES('201005011800','11','22','33','44');");
dbOperations.Add("INSERT INTO DateTimes(DateTime,G2) VALUES('201005011815','55','66','77','88');");
dbOperations.Add("INSERT INTO DateTimes(DateTime,G2) VALUES('201005011830','99','100','101','102');");
using (SqlConnection conn = new SqlConnection(GetConnectionString()))
{
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
foreach (string commandString in dbOperations)
{
SqlCommand cmd = new SqlCommand(commandString,conn,transaction);
cmd.ExecuteNonQuery();
}
transaction.Commit();
}
}