La conversion a échoué lors de la conversion de la valeur varchar '@uye_yasi' en type de données int

Im essayant d'insert des données dans ma database en utilisant C # lang et l'afficher avec DataGridView sur un Windows Form.Mais il me donne cette erreur spécifique:

La conversion a échoué lors de la conversion de la valeur varchar '@uye_yasi' en type de données int

Im sûr que j'ai écrit correctement tous les noms de colonne. Il y a une exception et son ID. Sa key primaire, pas Null et Auto Increment.

Chaîne de connection

SqlConnection baglan = new SqlConnection(@"Data Source=CASPER\SQLEXPRESS;Initial Catalog=kutuphane;Integrated Security=True"); 

La méthode de listage à afficher sur DataGridView; (fonctionne sans aucun problème)

  public void listle() { DataSet ds1 = new DataSet(); baglan.Open(); SqlDataAdapter da = new SqlDataAdapter("select * from uyeler",baglan); da.Fill(ds1); dataGridView1.DataSource = ds1.Tables[0]; baglan.Close(); } 

Codes sur l'événement form_load

 private void Form3_Load(object sender, EventArgs e) { listle(); dataGridView1.Columns[0].HeaderText = "ID"; dataGridView1.Columns[1].HeaderText = "Adı"; dataGridView1.Columns[2].HeaderText = "Soyadı"; dataGridView1.Columns[3].HeaderText = "Yaşı"; dataGridView1.Columns[4].HeaderText = "Adresi"; dataGridView1.Columns[5].HeaderText = "Telefonu"; dataGridView1.Columns[6].HeaderText = "Mail Adresi"; } 

Codes dans l'événement CellContentClick pour DataGridView

 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { int satir = dataGridView1.CurrentRow.Index; textAd.Text = dataGridView1.Rows[satir].Cells["uye_adi"].Value.ToSsortingng(); textSoyad.Text = dataGridView1.Rows[satir].Cells["uye_soyadi"].Value.ToSsortingng(); textYas.Text = dataGridView1.Rows[satir].Cells["uye_yasi"].Value.ToSsortingng(); textAdres.Text = dataGridView1.Rows[satir].Cells["uye_adresi"].Value.ToSsortingng(); textTelefon.Text = dataGridView1.Rows[satir].Cells["uye_telefonu"].Value.ToSsortingng(); textMail.Text = dataGridView1.Rows[satir].Cells["uye_mailadresi"].Value.ToSsortingng(); } 

Codes sur l'événement onclick pour le button Insérer

 private void btnEkle_Click(object sender, EventArgs e) { baglan.Open(); SqlCommand cmd = new SqlCommand("INSERT INTO uyeler (uye_adi,uye_soyadi,uye_yasi,uye_adresi,uye_telefonu,uye_mailadresi) values ('@uye_adi','@uye_soyadi','@uye_yasi','@uye_adresi','@uye_telefonu','@uye_mailadresi')",baglan); cmd.Connection = baglan; cmd.Parameters.AddWithValue("@uye_adi",textAd.Text); cmd.Parameters.AddWithValue("@uye_soyadi",textSoyad.Text); cmd.Parameters.AddWithValue("@uye_yasi",textYas.Text); cmd.Parameters.AddWithValue("@uye_adresi",textAdres.Text); cmd.Parameters.AddWithValue("@uye_telefonu",textTelefon.Text); cmd.Parameters.AddWithValue("@uye_mailadresi",textMail.Text); cmd.ExecuteNonQuery(); baglan.Close(); listle(); } 

Vous n'avez pas besoin d'envelopper vos parameters avec des guillemets simples (par exemple '@uye_adresi') car .NET gérera cela en fonction des types de parameters qu'il identifie:

 // Define your query and parameters var query = "INSERT INTO uyeler (uye_adi,uye_soyadi,uye_yasi,uye_adresi,uye_telefonu,uye_mailadresi) VALUES (@uye_adi,@uye_soyadi,@uye_yasi,@uye_adresi,@uye_telefonu,@uye_mailadresi)"; 

De plus, si vous envisagez de passer une valeur entière en paramètre, envisagez de la convertir au type approprié en utilisant Convert.ToInt32() :

 // This will pass in your parameter as an integer cmd.Parameters.AddWithValue("@uye_yasi",Convert.ToInt32(textYas.Text)); 

Si cela échoue, vous pouvez envisager d'utiliser la méthode Int32.TryParse() qui permettra de vérifier si datatables sont des entiers valides avant de continuer:

 int age; // Check if it is valid if(!Int32.TryParse(textYas.Text, out age)) { // It was invalid, consider alerting the user and trying again } // Otherwise, it was valid and the proper age is stored in age, so use it cmd.Parameters.AddWithValue("@uye_yasi",age);