【发布时间】:2019-02-05 10:16:15
【问题描述】:
作为初学者,努力理解 C# 和 Npgsql。以下代码示例:
// Insert some data
using (var cmd = new NpgsqlCommand())
{ cmd.Connection = conn;
cmd.CommandText = "INSERT INTO data (some_field) VALUES (@p)";
cmd.Parameters.AddWithValue("p", "Hello world");
cmd.ExecuteNonQuery();
}
到目前为止,这样的多个插入和更新语句的语法很清楚:
cmd.CommandText = "INSERT INTO data (some_field) VALUES (@p);INSERT INTO data1...;INSERT into data2... and so on";
但是对于应该在其中处理一个语句的循环来说,正确的解决方案是什么。
这行不通:
// Insert some data
using (var cmd = new NpgsqlCommand())
{
foreach(s in SomeStringCollectionOrWhatever)
{
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO data (some_field) VALUES (@p)";
cmd.Parameters.AddWithValue("p", s);
cmd.ExecuteNonQuery();
}
}
似乎这些值将被“连接”或被记住。我看不到任何“清除”现有 cmd 对象的可能性。
我的第二个解决方案是将整个“使用”块包装到循环中。但是每个循环都会创建一个新对象。这对我来说似乎很难看。
那么,我的问题的最佳解决方案是什么?
【问题讨论】:
标签: npgsql