如果我想向我的SQL Server数据库添加一些信息,我必须通过DataSet和DataAdapter来完成吗?
这个想法是,如果我的数据库有1-2百万个条目,考虑到我只想添加一行,那么我的内存不是不必要地被DataSet中的1-2百万行占用吗?有没有别的选择?
发布于 2010-12-02 23:38:23
您始终可以创建一个简单的老式ADO.NET参数化SqlCommand,其中包含一个简单的SQL INSERT语句,并提供参数,然后以这种方式加载数据(不需要加载任何内容,无论您已经有多少行-它将正常工作):
string insertStmt = "INSERT INTO dbo.YourTable(col1, col2, ...., colN) " +
"VALUES(@Value1, @Value2, ...., @ValueN)";
using(SqlConnection _con = new SqlConnection(-your-connection-string-here))
using(SqlCommand _cmdInsert = new SqlCommand(insertStmt, _con))
{
// define the parameters for your query
_cmdInsert.Parameters.Add("@Value1", SqlDbType.Int);
.......
// set the values
_cmdInsert.Parameters["@Value1"].Value = 4711;
.....
_con.Open();
int rowsInserted = _cmdInsert.ExecuteNonQuery();
_con.Close();
} 如果您有多行要插入,您可以遍历对象列表,为每个对象设置我们的_cmdInsert的值,并为每一行执行_cmdInsert.ExecuteNonQuery()。
当然,如果你使用对象关系管理(NHibernate,Linq-to-SQL,实体框架),这项工作可能会变得非常简单--只需将新对象插入到你的集合中并保存它们--对象关系管理会处理所有的细节(基本上就是执行我上面展示的这段代码--或多或少)。
发布于 2010-12-02 23:24:09
如果只插入一行,则不需要将任何内容提取到DataSet/DataAdapter中。添加行,提交更改,然后将执行相关的插入命令。
https://stackoverflow.com/questions/4336559
复制相似问题