С# SQL Server - ошибка при создании подкатегории

Когда я выбираю категорию из поля со списком, ввожу ее в текстовое поле и добавляю, в базе данных есть пробелы. Что является причиной этого? кто-нибудь может помочь? Фото базы данных и коды C# ниже.

try
{
    vt.baglanti();
    komut = new SqlCommand("insert into Kategoriler(kategori, kategori_id) values(@p1, @p2)", vt.baglanti());

    komut.Parameters.AddWithValue("@p1", tbAltKategori.Text);
    komut.Parameters.AddWithValue("@p2", comboBox1.SelectedValue);

    komut.ExecuteNonQuery();

    MessageBox.Show("Alt Kategori Oluşturulmuştur");
    vt.baglanti().Close();
    tbAltKategori.Clear();

    dialog = MessageBox.Show(tbAltKategori.Text + "'a Ait Yeni Bir Alt Kategori Oluşturacak mısınız?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

    if (dialog == DialogResult.Yes)
    {
        comboboxVeri.comboboxListelemeIdAlmaSartla("id", "kategori", "Kategoriler", "kategori_id  = " + comboBox1.SelectedValue, comboBox1);
                
        komut = new SqlCommand("insert into Kategoriler(kategori, kategori_id) values(@p1, @p2)", vt.baglanti());

        komut.Parameters.AddWithValue("@p1", tbAltKategori.Text);
        komut.Parameters.AddWithValue("@p2", comboBox1.SelectedValue);

        komut.ExecuteNonQuery();
    }

    vt.baglanti().Close();
}

Это метод, который я написал. Я не думаю, что в этом будет ошибка, но я все же оставляю коды ниже.

comboboxVeri.comboboxListelemeIdAlmaSartla("id", "kategori", "Kategoriler", "kategori_id  = " + comboBox1.SelectedValue, comboBox1)

public void comboboxListelemeIdAlmaSartla(string id, string alanAdi, string tabloAdi, string sart, ComboBox cb)
    {
        komut = new SqlCommand("select " + id + ", " + alanAdi + " from " + tabloAdi + " where " + sart, baglanti());
        da = new SqlDataAdapter(komut);
        dt = new DataTable();
        da.Fill(dt);
        cb.DisplayMember = alanAdi;
        cb.ValueMember = "id";
        cb.DataSource = dt;
    }

образ базы данных это образ базы данных.

Побочный пункт vt.baglanti(); не делайте этого, не кэшируйте объект соединения. Создайте его, когда вам нужно, и избавьтесь от него с помощью using. То же самое для объектов команды и адаптера

Charlieface 08.04.2022 12:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы очищаете текстовое поле перед вторым диалоговым окном

tbAltKategori.Clear();

и позже, если пользователь ответит да

komut.Parameters.AddWithValue("@p1", tbAltKategori.Text);

спасибо я решил эту проблему. но на этот раз, когда я добавляю его, он дважды добавляет его в базу данных, как мне с этим справиться?

emir cengiz 08.04.2022 10:58

Вы звоните komut.ExecuteNonQuery(); дважды

Kevin 08.04.2022 11:01

Ну, я не уверен на 100%, чего вы пытаетесь достичь, но вы добавляете значения в начале "komut.ExecuteNonQuery();" ~codelin 5, а затем спросите пользователя что-нибудь. Если пользователь ответит «да», вы снова добавите те же значения в базу данных, ничего не изменится.

hYg-Cain 08.04.2022 11:02

Другие вопросы по теме