2010-12-02 61 views
0

如果我想添加一些信息到我的SQL Server数据库,我必须通过DataSetDataAdapter来完成吗?DataSet占用太多空间吗?

这个想法是,如果我的数据库有1-2百万条记录,考虑到我只想添加一行,是不是我的内存占用了不必要的空间,因为DataSet中的1-2密尔行?有其他选择吗?

回答

2

你总是可以创建一个简单的旧的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()。当然,如果你使用类似于ORM(NHibernate,Linq-to-SQL,Entity Framework)的东西,那么这项工作可能变得非常容易 - 只需将新对象插入到你的集合中并保存它们--ORM将处理所有的基本细节(基本上是我上面展示的代码并执行它 - 或多或少)。

7

如果您只插入一行,则不需要将任何东西纳入DataSet/DataAdapter。您添加该行,提交更改,并执行相关的INSERT命令。

+0

和如何抓的最后1000行的数据库吗? – Alex 2010-12-02 15:46:57