为了账号安全,请及时绑定邮箱和手机立即绑定

关于SqlDataAdapter的几个Command属性的疑问

关于SqlDataAdapter的几个Command属性的疑问

慕莱坞森 2018-12-07 10:44:54
http://topic.csdn.net/u/20071119/17/9316fdc5-5993-4720-a8e7-0d4ab5e28528.html 上面的问题就是我碰到的我想操作的是利用SqlDataAdapter的几个Command属性(InsertCommand,UpdateCommand,DeleteCommand)来更新数据库代码:SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=newsystem;Integrated Security=True");  SqlDataAdapter da = new SqlDataAdapter("select * from comment", conn);  //这里的构造函数直接实例化了SelectCommand所需要的SqlCommand了吧?  DataSet ds = new DataSet("myds");  da.FillSchema(ds, SchemaType.Source, "comment");  da.Fill(ds, "comment");  //接下来设置InsertCommand所需要的SqlCommandSqlCommand incmd=new SqlCommand("insert into comment (****) values(****)",conn);  da.InsertCommand = incmd;  //接下来是更新到数据库  da.Update(ds.Tables["comment"]);  ds.Tables["comment"].AcceptChanges();  可到数据库里一看,悲剧发生了:没有插入该条记录!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!网上一查:有些说要实例化SqlCommandBuilder,可我觉得我的InsertCommand所需要的SqlCommand都写好了,不需要这样吧!SqlCommandBuilder好像只是适用于直接修改DataSet,由SqlCommandBuilder自动生成所需的SQL语句:  SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=newsystem;Integrated Security=True");  SqlDataAdapter da = new SqlDataAdapter("select * from comment", conn);  SqlCommandBuilder cmdb = new SqlCommandBuilder(da);  DataSet ds = new DataSet("myds");  da.FillSchema(ds, SchemaType.Source, "comment");  da.Fill(ds, "comment");  ds.Tables["comment"].Rows[5]["content"] = "Can you help me???";  da.Update(ds.Tables["comment"]);  ds.Tables["comment"].AcceptChanges();
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

public static SqlDataAdapter CreateCustomerAdapter( SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter();

    // Create the SelectCommand.
    SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
        "WHERE Country = @Country AND City = @City", connection);

    // Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15);

    adapter.SelectCommand = command;

    // Create the InsertCommand.
    command = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);

    // Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");

    adapter.InsertCommand = command;

    // Create the UpdateCommand.
    command = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);

    // Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
    SqlParameter parameter = command.Parameters.Add(
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.UpdateCommand = command;

    // Create the DeleteCommand.
    command = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Add the parameters for the DeleteCommand.
    parameter = command.Parameters.Add(
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand = command;

    return adapter;
}

查看完整回答
反对 回复 2019-01-21
  • 1 回答
  • 0 关注
  • 337 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信