【问题标题】:Data Adapter Vs Sql Command数据适配器与 Sql 命令
【发布时间】:2011-09-27 23:32:49
【问题描述】:

ms-sql数据库执行insert语句哪个更好:

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");

【问题讨论】:

  • 您是否在 DataLayer 中使用 DataSet 来读取数据?
  • @Yves 不,我已经控制了数据库。

标签: c# asp.net sql sqlcommand sqldataadapter


【解决方案1】:

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

使用 DataAdapter 与使用命令之间的性能可能没有(或很少)差异。 DataAdapter 在内部使用 Connection 和 Command 对象并执行 Commands 以执行您告诉它们执行的操作(例如 Fill 和 Update),因此它与仅使用 Command 对象几乎相同。

【讨论】:

    【解决方案2】:

    我会将 LinqToSql 与 DataSet 一起用于单次插入和大多数数据库 CRUD 请求。它是类型安全的,对于上述非复杂查询来说相对较快。

    如果您有很多行要插入 (1000+) 并且您使用的是 SQL Server 2008,我会使用 SqlBulkCopy。您可以使用您的 DataSet 并输入到存储过程中并合并到您的目标中

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

    【讨论】:

      【解决方案3】:

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

      如果您将该技术与类型化数据集一起使用会更好。然后你对所有列进行智能感知和编译时间检查

      【讨论】:

        猜你喜欢
        • 2012-11-02
        • 1970-01-01
        • 2015-09-30
        • 2016-10-16
        • 1970-01-01
        • 2011-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多