2016-05-03 3 views
1

Im Versuch, Daten in der Datenbank mit C# lang einzusetzen und zeigen Sie sie mit Datagridview auf einem Windows Form.But es gibt mir, dass bestimmte Fehler:Fehler bei der Konvertierung, wenn die varchar-Wert-Umwandlungs ‚@uye_yasi‘ in dem Datentyp int

Fehler bei der Konvertierung, wenn die varchar-Wert-Umwandlungs ‚@uye_yasi‘ in dem Datentyp int

ich bin sicher, ich alle Spaltennamen schrieb correctly.There ist eine Ausnahme und seine ID.Its Primärschlüssel, Not Null und Auto Increment .

Connection String

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

Die Auflistung Methode auf Datagridview zu zeigen; (Funktioniert ohne Probleme)

public void listele() 
{ 
    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 auf form_load Ereignis

private void Form3_Load(object sender, EventArgs e) 
{ 
    listele(); 

    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 in CellContentClick Ereignis für Datagridview

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    int satir = dataGridView1.CurrentRow.Index; 

    textAd.Text = dataGridView1.Rows[satir].Cells["uye_adi"].Value.ToString(); 
    textSoyad.Text = dataGridView1.Rows[satir].Cells["uye_soyadi"].Value.ToString(); 
    textYas.Text = dataGridView1.Rows[satir].Cells["uye_yasi"].Value.ToString(); 
    textAdres.Text = dataGridView1.Rows[satir].Cells["uye_adresi"].Value.ToString(); 
    textTelefon.Text = dataGridView1.Rows[satir].Cells["uye_telefonu"].Value.ToString(); 
    textMail.Text = dataGridView1.Rows[satir].Cells["uye_mailadresi"].Value.ToString(); 
} 

Codes auf Onclick-Ereignis für Schaltfläche Einfügen

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(); 
    listele(); 
} 
+0

Ihr Wert ist in Sprachmarken, also wird es als Text eingefügt, was enthält uye_yasi eigentlich? - Es ist höchstwahrscheinlich Text –

+0

uye_yasi ist eine int-Spalte in meiner Datenbank.Und ich referenzierte es als @uye_yasi zu textYas.Text (ein Textfeld, das Alter enthält) –

+0

Konvertieren Sie es in int –

Antwort

1

Sie müssen Ihre Parameter nicht in einfache Anführungszeichen setzen (z. ‚@uye_adresi‘) als .NET durchführen wird behandeln, die für Sie auf den Typen der Parameter zugrunde gelegt, die sie identifiziert:

// 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)"; 

Außerdem, wenn Sie einen Integer-Wert beim Übergang in als Parameter planen, erwägen Umwandlung es in den entsprechenden Typ vorher die Convert.ToInt32() mit:

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

wenn dies nicht gelingt, dann könnten Sie die Int32.TryParse() Methode berücksichtigen, dass die Daten überprüfen können, ob eine gültige ganze Zahl, bevor Sie fortfahren ist:

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); 
+0

Vielen Dank! Das Problem war, wie Sie sagten, diese einfachen Anführungszeichen.Wenn ich sie verwende, fügt es den Text zwischen einfachen Anführungszeichen (das ist, warum es nicht ein int-Wert war) .Now Ich kann mein Hochschulprojekt erfolgreich repräsentieren;) –

Verwandte Themen