Когда я выбираю категорию из поля со списком, ввожу ее в текстовое поле и добавляю, в базе данных есть пробелы. Что является причиной этого? кто-нибудь может помочь? Фото базы данных и коды 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;
}
образ базы данных это образ базы данных.
вы очищаете текстовое поле перед вторым диалоговым окном
tbAltKategori.Clear();
и позже, если пользователь ответит да
komut.Parameters.AddWithValue("@p1", tbAltKategori.Text);
спасибо я решил эту проблему. но на этот раз, когда я добавляю его, он дважды добавляет его в базу данных, как мне с этим справиться?
Вы звоните komut.ExecuteNonQuery();
дважды
Ну, я не уверен на 100%, чего вы пытаетесь достичь, но вы добавляете значения в начале "komut.ExecuteNonQuery();" ~codelin 5, а затем спросите пользователя что-нибудь. Если пользователь ответит «да», вы снова добавите те же значения в базу данных, ничего не изменится.
Побочный пункт
vt.baglanti();
не делайте этого, не кэшируйте объект соединения. Создайте его, когда вам нужно, и избавьтесь от него с помощьюusing
. То же самое для объектов команды и адаптера