数据适配器与Sql命令

本文关键字:命令 Sql 适配器 数据 | 更新日期: 2023-09-27 18:01:08

在为ms-sql数据库执行插入语句时,哪个更好:

Sql DataAdapter或Sql命令对象

inserting only one rowinserting multiple rows时,它们中的哪一个会更好?

代码使用的一个简单示例:

SQL命令

string query = "insert into Table1(col1,col2,col3) values (@value1,@value2,@value3)";
int i;
SqlCommand cmd = new SqlCommand(query, connection);
// add parameters...
cmd.Parameters.Add("@value1",SqlDbType.VarChar).Value=txtBox1.Text;
cmd.Parameters.Add("@value2",SqlDbType.VarChar).Value=txtBox2.Text;
cmd.Parameters.Add("@value3",SqlDbType.VarChar).Value=txtBox3.Text;
cmd.con.open();
i = cmd.ExecuteNonQuery();
cmd.con.close();

SQL数据适配器

DataRow dr = dsTab.Tables["Table1"].NewRow();
DataSet dsTab = new DataSet("Table1");
SqlDataAdapter adp = new SqlDataAdapter("Select * from Table1", connection);
adp.Fill(dsTab, "Table1");
dr["col1"] = txtBox1.Text;
dr["col2"] = txtBox5.Text;    
dr["col3"] = "text";
dsTab.Tables["Table1"].Rows.Add(dr);
SqlCommandBuilder projectBuilder = new SqlCommandBuilder(adp);
DataSet newSet = dsTab.GetChanges(DataRowState.Added);
adp.Update(newSet, "Table1");

数据适配器与Sql命令

使用DataAdapters更新数据源要容易得多。由于您只需修改数据集并调用Update,因此进行更改更容易。

使用DataAdapters和使用Commands在性能上可能没有(或差别很小(差异。DataAdapters在内部使用Connection和Command对象,并执行命令来执行您要求他们执行的操作(如填充和更新(,因此这与仅使用Command对象几乎相同。

对于单个插入和大多数数据库CRUD请求,我会将LinqToSql与DataSet一起使用。它是类型安全的,对于像上面这样的非编译查询来说相对快速。

如果您有许多行要插入(1000+(,并且您使用的是SQL Server 2008,我会使用SqlBulkCopy。您可以使用数据集并将其输入到存储过程中,然后合并到目标中

对于复杂的查询,我建议将dapper与存储过程结合使用。

我建议您对与数据库的通信进行某种控制。这意味着要抽象一些代码,为此CommandBuilder会自动为您生成CUD语句。

如果将该技术与类型化数据集结合使用,效果会更好。然后对所有列

进行intelligense和编译时检查