如果我想添加一些信息到我的SQL Server數據庫,我必須通過DataSet
和DataAdapter
來完成嗎?DataSet佔用太多空間嗎?
這個想法是,如果我的數據庫有1-2百萬條記錄,考慮到我只想添加一行,是不是我的內存佔用了不必要的空間,因爲DataSet
中的1-2密爾行?有其他選擇嗎?
如果我想添加一些信息到我的SQL Server數據庫,我必須通過DataSet
和DataAdapter
來完成嗎?DataSet佔用太多空間嗎?
這個想法是,如果我的數據庫有1-2百萬條記錄,考慮到我只想添加一行,是不是我的內存佔用了不必要的空間,因爲DataSet
中的1-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將處理所有的基本細節(基本上是我上面展示的代碼並執行它 - 或多或少)。
如果您只插入一行,則不需要將任何東西納入DataSet
/DataAdapter
。您添加該行,提交更改,並執行相關的INSERT命令。
和如何抓的最後1000行的數據庫嗎? – Alex 2010-12-02 15:46:57