2009-06-11 48 views
0

我有兩個數據集問題。數據集問題

  1. 如果我更改數據集中的任何單元格,如何在不使用SQL更新查詢的情況下更新數據庫中的此更改?
  2. 如何在調試模式下查看數據集內容(查看數據)?

回答

10
  1. 不能更新沒有UPDATE查詢數據庫。這就是更新發生的方式。您可以使用抽象化的庫,以便您不必在代碼中查看查詢,但查詢仍然必須發生。

  2. 通過將數據集添加到監視列表並單擊小放大鏡圖標,您可以在調試模式下查看數據集的內容。它打開一個窗口,讓你查看數據集中的表格。

2

您可以使用LINQ將數據更新到數據庫中,而無需使用T-SQL Update查詢。

+0

就像我說的,這仍然會導致更新查詢,但它可能是什麼意思金獎。 +1 – Welbog 2009-06-11 16:37:49

+0

我相信你不必爲此編寫你的存儲過程和t-sql查詢。您可以使用ORM來實現這一點。 – Bhaskar 2009-06-11 20:44:39

1

你在找什麼是DataAdapter。它將管理更新,刪除和插入更改。

0

檢查這個代碼,並根據需要進行修改

///<summary>Update Batch records in DataTable</summary> 
    ///<remarks></remarks> 
    public void UpdateTables(System.Data.DataTable DataTable) 
    { 

     if (DataTable.TableName.Length == 0) 
     { 
      throw new Exception("The DataTable tablename is nedded."); 
     } 

     if (this.State == ConnectionState.Closed) 
     { 
      this.Connect(); 
     } 

     try 
     { 
      string strTablename = DataTable.TableName, strSQL; 
      System.Data.IDbDataAdapter dt = null; 

      if (DataTable.TableName.Length == 0) 
      { 
       throw new Exception("Tablename can't be null."); 
      } 

      strSQL = "SELECT * FROM " + strTablename; 

      if (m_DatabaseType == DatabaseTypeEnum.Access) 
      { 
       dt = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_ConnectionString); 
       System.Data.OleDb.OleDbCommandBuilder cb_a 
        = new System.Data.OleDb.OleDbCommandBuilder((System.Data.OleDb.OleDbDataAdapter)dt); 

       dt.InsertCommand = cb_a.GetInsertCommand(); 
       dt.UpdateCommand = cb_a.GetUpdateCommand(); 
       dt.DeleteCommand = cb_a.GetDeleteCommand(); 

       ((System.Data.OleDb.OleDbDataAdapter)dt).Update(DataTable); 
      } 
      else if (m_DatabaseType == DatabaseTypeEnum.SQLServer) 
      { 
       dt = new System.Data.SqlClient.SqlDataAdapter(strSQL, m_ConnectionString); 
       System.Data.SqlClient.SqlCommandBuilder cb_s 
        = new System.Data.SqlClient.SqlCommandBuilder((System.Data.SqlClient.SqlDataAdapter)dt); 

       dt.InsertCommand = cb_s.GetInsertCommand(); 
       dt.UpdateCommand = cb_s.GetUpdateCommand(); 
       dt.DeleteCommand = cb_s.GetDeleteCommand(); 

       ((System.Data.SqlClient.SqlDataAdapter)dt).Update(DataTable); 
      } 
      else if (m_DatabaseType == DatabaseTypeEnum.Oracle) 
      { 
       dt = new System.Data.OracleClient.OracleDataAdapter(strSQL, m_ConnectionString); 
       System.Data.OracleClient.OracleCommandBuilder cb_o 
        = new System.Data.OracleClient.OracleCommandBuilder((System.Data.OracleClient.OracleDataAdapter)dt); 

       dt.InsertCommand = cb_o.GetInsertCommand(); 
       dt.UpdateCommand = cb_o.GetUpdateCommand(); 
       dt.DeleteCommand = cb_o.GetDeleteCommand(); 

       ((System.Data.OracleClient.OracleDataAdapter)dt).Update(DataTable); 
      } 
      else if (m_DatabaseType == DatabaseTypeEnum.Odbc) 
      { 
       dt = new System.Data.Odbc.OdbcDataAdapter(strSQL, m_ConnectionString); 
       System.Data.Odbc.OdbcCommandBuilder cb_c 
        = new System.Data.Odbc.OdbcCommandBuilder((System.Data.Odbc.OdbcDataAdapter)dt); 

       dt.InsertCommand = cb_c.GetInsertCommand(); 
       dt.UpdateCommand = cb_c.GetUpdateCommand(); 
       dt.DeleteCommand = cb_c.GetDeleteCommand(); 

       ((System.Data.Odbc.OdbcDataAdapter)dt).Update(DataTable); 
      } 
      else 
      { 
       throw new NotImplementedException(); 
      } 

      DataTable.AcceptChanges(); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(ex.Message); 
     } 
    }