Вопросы набора данных - PullRequest
       11

Вопросы набора данных

0 голосов
/ 11 июня 2009

У меня два вопроса о наборе данных.

  1. Если я изменю какую-либо ячейку в наборе данных, как я могу обновить это изменение в базе данных без использования запроса на обновление SQL?
  2. Как посмотреть содержимое набора данных в режиме отладки (чтобы просмотреть данные)?

Ответы [ 4 ]

10 голосов
/ 11 июня 2009
  1. Вы не можете обновить базу данных без запроса UPDATE. Вот так обновления происходят. Вы можете использовать библиотеки, которые абстрагируют это, чтобы вам не приходилось видеть запрос в вашем коде, но запрос все равно должен выполняться.

  2. Вы можете просмотреть содержимое набора данных в режиме отладки, добавив его в список наблюдения и щелкнув по маленькому значку увеличительного стекла. Он открывает окно, которое позволяет вам просматривать таблицы в наборе данных.

2 голосов
/ 11 июня 2009

Вы можете использовать LINQ для обновления данных в базе данных без запроса на обновление T-SQL.

1 голос
/ 11 июня 2009

То, что вы ищете, это DataAdapter . Он будет управлять обновлением, удалением и вставкой изменений.

0 голосов
/ 27 июня 2009

Проверьте этот код и адаптируйтесь к вашим потребностям

    ///<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);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...