Не удалось обновить базу данных из DataGridView - PullRequest
0 голосов
/ 18 января 2012

Этот проект WinForms имеет следующий код:

DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["EbosPr.Properties.Settings.Database1ConnectionString1"].ConnectionString);
SqlCommand scmd = new SqlCommand("Select * From CustCalls ", conn);
SqlDataAdapter sda = new SqlDataAdapter(scmd);

sda.Fill(ds);

DataTable dt = ds.Tables[0];
this.dataGridView1.BindingContext[dt].EndCurrentEdit();
SqlCommandBuilder myBuilder = new SqlCommandBuilder(sda);

myBuilder.GetUpdateCommand();

sda.UpdateCommand = myBuilder.GetUpdateCommand();
sda.Update(dt);

Он не обновляет базу данных и не содержит ошибок. Как это можно улучшить?

Ответы [ 2 ]

0 голосов
/ 29 мая 2013

используйте dataTable вместо DataSet .., который работал для меня

0 голосов
/ 18 января 2012

У меня есть следующий код в небольшой внутренней утилите, и он работает как шарм:

public int UpdateSQLDataTable(string connectionString, string TableName, DataTable dtSource)
{
    using (SqlConnection sConn = new SqlConnection(connectionString))
    {
        sConn.Open();

        var transaction = sConn.BeginTransaction();

        try
        {
            SqlCommand command = sConn.CreateCommand();
            command.Transaction = transaction;

            command.CommandText = string.Format("SELECT TOP 1 * FROM dbo.[{0}] WITH (NOLOCK)", TableName);
            command.CommandType = CommandType.Text;

            // timeout in seconds...
            command.CommandTimeout = 30;

            SqlDataAdapter sAdp = new SqlDataAdapter(command);

            SqlCommandBuilder sCMDB = new SqlCommandBuilder(sAdp);

            int affectedRecords = sAdp.Update(dtSource);

            transaction.Commit();

            return affectedRecords;
        }
        catch (Exception /* exp */)
        {
            transaction.Rollback();

            throw;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...