如果我想添加一些信息到我的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