首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataSet是否占用了太多的空间?

DataSet是否占用了太多的空间?
EN

Stack Overflow用户
提问于 2010-12-02 23:22:22
回答 2查看 136关注 0票数 0

如果我想向我的SQL Server数据库添加一些信息,我必须通过DataSetDataAdapter来完成吗?

这个想法是,如果我的数据库有1-2百万个条目,考虑到我只想添加一行,那么我的内存不是不必要地被DataSet中的1-2百万行占用吗?有没有别的选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-02 23:38:23

您始终可以创建一个简单的老式ADO.NET参数化SqlCommand,其中包含一个简单的SQL INSERT语句,并提供参数,然后以这种方式加载数据(不需要加载任何内容,无论您已经有多少行-它将正常工作):

代码语言:javascript
复制
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,实体框架),这项工作可能会变得非常简单--只需将新对象插入到你的集合中并保存它们--对象关系管理会处理所有的细节(基本上就是执行我上面展示的这段代码--或多或少)。

票数 2
EN

Stack Overflow用户

发布于 2010-12-02 23:24:09

如果只插入一行,则不需要将任何内容提取到DataSet/DataAdapter中。添加行,提交更改,然后将执行相关的插入命令。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4336559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档