2009-06-11 68 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); 
     } 
    }