none
Datagridview更新到非绑定的数据库,需要怎么做 RRS feed

  • 問題

  • 我的datagridview的数据源是ACCESS数据库中的一个表,但是在datagridview中加入很多自定义的列,这些列又是通过绑定列经过计算得出的值,我现在想把修改过的datagridview的值直接更新到数据库中的另一个表,这个表有datagridview中大部分的列名.

    请教,需要怎么做呢?

    2006年11月4日 上午 03:28

解答

  • 你可以試看看如下做法:

    1. 用一DataTable接你有改過的資料 
      Dim changeTable As DataTable = table.GetChanges(DataRowState.Deleted)    'table是你datagridview.datasource的table

    2. 自己下update語法
      SqlDa.UpdateCommand.Connection = sqlCn      
      SqlDa.UpdateCommand.CommandText = " Update TableName set colName1 = @col1 , colName2 = @col2 where colName3 = @col3 "

    3. 定義參數及參數資料來源
    sqlDa.UpdateCommand.Parameters.Add("@col1", SqlDbType.NVarChar).SourceColumn = "DataGridColName1";
    sqlDa.UpdateCommand.Parameters.Add("@col2", SqlDbType.NVarChar).SourceColumn = "DataGridColName2";
    sqlDa.UpdateCommand.Parameters.Add("@col3", SqlDbType.NVarChar).SourceColumn = "DataGridColName3";

    4.執行
    sqlDa.Update(dt);如此即可批次Update

     

    2006年11月4日 上午 09:34

所有回覆

  • 如果你的資料來源是 DataTable,則你可以透過 DataTable.GetChanged(RowState.Modified) 取得被修改過的資料列陣列,然後你就可以自己寫一個 UPDATE 的 Command 來進行更新 .
    2006年11月4日 上午 03:58
    版主
  • 谢谢小朱的回答,我查找了MSDN关于datatable.getchanged这个方法,但是还是不太明白具体怎么用,

    请问能不能解答的具体点,非常感谢!

    2006年11月4日 上午 05:10
  • 你可以試看看如下做法:

    1. 用一DataTable接你有改過的資料 
      Dim changeTable As DataTable = table.GetChanges(DataRowState.Deleted)    'table是你datagridview.datasource的table

    2. 自己下update語法
      SqlDa.UpdateCommand.Connection = sqlCn      
      SqlDa.UpdateCommand.CommandText = " Update TableName set colName1 = @col1 , colName2 = @col2 where colName3 = @col3 "

    3. 定義參數及參數資料來源
    sqlDa.UpdateCommand.Parameters.Add("@col1", SqlDbType.NVarChar).SourceColumn = "DataGridColName1";
    sqlDa.UpdateCommand.Parameters.Add("@col2", SqlDbType.NVarChar).SourceColumn = "DataGridColName2";
    sqlDa.UpdateCommand.Parameters.Add("@col3", SqlDbType.NVarChar).SourceColumn = "DataGridColName3";

    4.執行
    sqlDa.Update(dt);如此即可批次Update

     

    2006年11月4日 上午 09:34