zoukankan      html  css  js  c++  java
  • 我想操作的是利用SqlDataAdapter的几个Command属性(InsertCommand,UpdateCommand,DeleteCommand)来更新数据库

    我想操作的是利用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所需要的SqlCommand
    SqlCommand 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();

    -----------------------------------------------------------------------------------------------------------------------------------------------

    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;
    }


    public static DataSet GetCustomerData(string dataSetName, string connectionString) { DataSet dataSet = new DataSet(dataSetName); using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter( "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection); DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers"); mapping.ColumnMappings.Add("CompanyName", "Name"); mapping.ColumnMappings.Add("ContactName", "Contact"); connection.Open(); adapter.FillSchema(dataSet, SchemaType.Mapped); adapter.Fill(dataSet); return dataSet; } }
    摘自网络:http://q.cnblogs.com/q/20398/
  • 相关阅读:
    libevent的问题
    mysql homedir迁移
    mysql海量数据的优化
    Spark(Hive) SQL中UDF的使用(Python)【转】
    Spark SQL inferSchema实现原理探微(Python)【转】
    Spark SQL利器:cacheTable/uncacheTable【转】
    Spark使用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题【转】
    ExecutorService-10个要诀和技巧【转】
    漫游Kafka之过期数据清理【转】
    kafka多线程消费及处理和手动提交处理方案设计[转]
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3236601.html
Copyright © 2011-2022 走看看