SqlCommandBuilder builder = new SqlCommandBuilder(data);
 data.Update(ds, "mydt");
怎么用?
现在我一个DatagridView的数据源是DataTable。
但是我要大批量的修改。然后我就考虑到了SqlCommandBuilder 。
但是好像行不通?

解决方案 »

  1.   

    使用SqlCommandBuilder生成sql语然必须保证表有主键。否则自己写sql语句string connString="你的连接字符串";
    SqlConnection conn=new SqlConnection(connString);
    conn.Open();
    SqlDataAdapter adp = new SqlDataAdapter("select * from table",conn);
    SqlCommandBuilder builder = new SqlCommandBuilder(adp);
    adp.Update(dt);
      

  2.   

    string connString="你的连接字符串";
    SqlConnection conn=new SqlConnection(connString);
    conn.Open();
    SqlDataAdapter adp = new SqlDataAdapter("select * from table",conn);
    SqlCommandBuilder builder = new SqlCommandBuilder(adp);
    adp.Update(dt); 
    adp.Dispose();
      

  3.   

    private void UpdateDataGridView(DataGridView dataGridView1)
    {
        string sql = "select *** from TABLE where *** ";
        try
        {
            DataTable dt = new DataTable();
            using (SqlConnection conn = new SqlConnection("***"))
            {
                conn.Open();
                using (SqlDataAdapter adp = new SqlDataAdapter(sql, conn))
                {
                    using (SqlCommandBuilder scb = new SqlCommandBuilder(adp))
                    {
                        adp.Fill(dt);
                        adp.Update(dt);
                        dataGridView1.DataSource = dt;
                        dataGridView1.Refresh();
                    } 
                } 
            } 
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Information");
        }
    }
      

  4.   

                        using (SqlDataAdapter adp = new SqlDataAdapter(sql, connString))
                        {
                            using (SqlCommandBuilder scb = new SqlCommandBuilder(adp))
                            {
                                adp.FillSchema(dt, SchemaType.Source);                
                                adp.Fill(dt);
                                adp.Update(dt);                            
                            }
                        }
      

  5.   

    親測,沒問題。
    private void UpdateAllDataGridViewRows(SqlConnection conn, DataGridView dataGridView1)
    {
        string sql = "update users set sex='Female'";
        DataTable dt = new DataTable();   
        try
        { 
            if (conn.State != ConnectionState.Open)
                conn.Open();
            using (SqlDataAdapter adp = new SqlDataAdapter(sql, conn))
            {
                using (SqlCommandBuilder scb = new SqlCommandBuilder(adp))
                {
                    adp.FillSchema(dt, SchemaType.Source);                
                    adp.Fill(dt);
                    adp.Update(dt);                            
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Information");
        }
    }
      

  6.   

    //绑定的时候Session["DataTable"] = DataTable;GridView.DataSource = Session["DataTable"] as DataTable;GridView.DataBind();//需要修改的时候DataTable dt = Session["DataTable"] as DataTable;dt.Rows[0][0] = .......;Session["DataTable"]  = null;Session["DataTable"]  = dt ;GridView.DataSource = Session["DataTable"] as DataTable;GridView.DataBind();