如果我想在SQL Server数据库中添加一些信息,我必须通过DataSet
和DataAdapter
来完成吗?
这个想法是,如果我的数据库有1-2百万个条目,考虑到我只想添加一行,DataSet
的1-2密码行不会占用我的内存?还有其他选择吗?
答案 0 :(得分:7)
如果您只插入一行,则无需将任何提取到DataSet
/ DataAdapter
。您添加行,提交更改,并执行相关的INSERT命令。
答案 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将处理所有详细的细节(基本上我上面展示的代码并执行它 - 或多或少)。