2010-12-02 123 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