AjayBaroda Ответов: 0

Обновление Sqldataadapter из datagridview c# проблема


Попробуйте обновить данные из DataGridView с помощью SqlDataAdapter, но при нажатии кнопки Update(Save) появляется следующая ошибка

объект DataAdapter.Свойство SelectCommand должно быть инициализировано.

Что я уже пробовал:

Мой код на кнопке загрузки и сохранения

SqlDataAdapter adp;
SqlCommandBuilder cmdBld;
DataTable dtEditMember = new DataTable();

private void butLoadMember_Click(object sender, EventArgs e)
{
    using (SqlConnection conn = new SqlConnection(dbConn))
    {
        conn.Open();
        using (adp = new SqlDataAdapter())
        {
            if (txtEditMemberVehiNo.MaskCompleted)
            {
                adp.SelectCommand = new SqlCommand("Select * From Master Where VehiNo = @VehiNo");
                adp.SelectCommand.Parameters.Add("@VehiNo", SqlDbType.NVarChar).Value = txtEditMemberVehiNo.Text;
            }
            else if (!string.IsNullOrWhiteSpace(txtEditMemberCustName.Text))
            {
                adp.SelectCommand = new SqlCommand("Select * From Master Where CustName = @CustName");
                adp.SelectCommand.Parameters.Add("@CustName", SqlDbType.NVarChar).Value = txtEditMemberCustName.Text;
            }

            adp.SelectCommand.Connection = conn;
            adp.Fill(dtEditMember);
        }
    }
    if (dtEditMember.Rows.Count > 0)
    {
        dgvEditMember.DataSource = dtEditMember;
        dgvEditMember.Columns["VehiNo"].HeaderText = "Vehicle No";

        butLoadMember.Enabled = false;
        butUpdateMember.Enabled = true;
    }
    else
    {
        txtEditMemberVehiNo.Clear();
        txtEditMemberCustName.Clear();
        dgvEditMember.Columns.Clear();
        MessageBox.Show("Member Not Found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

}

private void butUpdateMember_Click(object sender, EventArgs e)
{

    cmdBld = new SqlCommandBuilder(adp);
    if (dtEditMember.GetChanges() != null)
    {
        adp.Update(dtEditMember);
        MessageBox.Show("Changes Done.");
    }
}

sameer549

проверьте эту ссылку один раз,
http://www.c-sharpcorner.com/uploadfile/61b832/sqldataadapter-update-method/

CHill60

Если эта ошибка возникает в butUpdateMember_Click, то это происходит потому, что вы не инициализировали ничего, кроме конструктора команд...посмотрите на весь код в butLoadMember_Click ...

AjayBaroda

я попытался добавить оператор update в butLoadMember_Click, а также попытался в butUpdateMember_Click, но ни один из них не работает. Пожалуйста, укажите подсказку о наилучшем решении. Например, где и какое заявление об обновлении я должен включить.

sameer549

я думаю, что в butUpdateMember_Click вам не хватает команды update перед строкой adp. Update(dtEditMember)
это должно быть что-то вроде
// выберите команду обновить
АДП.UpdateCommand=ЦМД;
// обновление источника данных
adp. Update(dtEditMember);

0 Ответов