Member 13037527 Ответов: 1

В C# datagridview у меня возникает проблема. При обновлении записи не обновляются. Ниже моего кода


private void button1_Click(object sender, EventArgs e)
       {
           con.Open();

           SqlDataAdapter sda = new SqlDataAdapter("UPDATE [dbo].[companyDB] SET[compname] = '" + bxcpname.Text + "' WHERE compcode='" + recbox.Text + "'", con);
           sda.SelectCommand.ExecuteNonQuery();
           MessageBox.Show("Record Updated");
           con.Close();
           dataload();

       }

public void dataload()
        {
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter("SELECT [compcode],[compname] FROM[dbo].[companyDB]", con);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            foreach (DataRow item in dt.Rows)
            {
                int n = dataGridView1.Rows.Add();
                dataGridView1.Rows[n].Cells[0].Value = item["compcode"].ToString();
                dataGridView1.Rows[n].Cells[1].Value = item["compname"].ToString();
            }
            con.Close();


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

Я написал одну функцию для loaddata agian. он работает в сложении. Обновление только проблема.

RickZeeland

Если вы уверены, что данные будут извлечены, вы можете установить точку останова и проверить переменные с помощью мыши.
Кроме того, вы можете протестировать команду sql в среде SQL Server Management Studio.

Member 13037527

Я проверил, поместив точку останова в update. управление будет обновляться (функция dataload), но не работает, почему так? та же функция, которую я вызвал после добавления, и она работает

RickZeeland

Я заметил, что между SET[compname] нет пробела, может быть, вы можете попробовать это.
Я бы также посоветовал попробовать команду update вручную из SQL Server Management Studio, Если есть какие-либо ошибки, например, с ограничениями, они будут отображаться.

Member 13037527

Я пытался но то же самое

1 Ответов

Рейтинг:
0

RickZeeland

Может быть, вам это нужно:

var cb = new SqlCommandBuilder(sda);
sda.DeleteCommand = cb.GetDeleteCommand(true);
sda.UpdateCommand = cb.GetUpdateCommand(true);
sda.InsertCommand = cb.GetInsertCommand(true);


Member 13037527

Я попробовал то,что ты сказал. Но новая ошибка приходит как "Динамическая генерация SQL не поддерживается для команды SelectCommand, которая не возвращает никакой информации о базовой таблице."

Member 13037527

Я добавил он лайн
dataGridView1.Строк.Четкий();
теперь он отлично работает для меня. В любом случае спасибо за вашу помощь

RickZeeland

Фу, я никогда не работаю с SqlDataAdapter, так что мне пришлось догадаться.
Вместо этого я использую более прямой подход с SqlCommand, вот пример: https://www.dotnetperls.com/sqlcommand