2016-05-03 4 views
1

Im пытается вставить данные в свою базу данных с помощью C# Ланг и показать его с DataGridView на Windows, Form.But это дает мне эту конкретную ошибку:Конверсия удалось при преобразовании значения VARCHAR «@uye_yasi» к типу данных междунар

Конверсия удалось при преобразовании значения VARCHAR «@uye_yasi» к типу данных междунар

Я уверен, что я написал все имена столбцов correctly.There является одним исключением и его ID.Its Первичный ключ, не Null и Auto Increment ,

Строка соединения

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

Метод листинга показать на DataGridView; (Работает без каких-либо проблем)

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

коды на событие Form_Load

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"; 
} 

коды в CellContentClick случае для 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(); 
} 

коды на OnClick событие для кнопки Insert

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

Ваша ценность в речевых меток, поэтому она вставляется как текст, что действительно содержит uye_yasi? - Скорее всего, текст –

+0

uye_yasi - это столбец int в моей базе данных. И я называет его как @uye_yasi textYas.Text (текстовое поле, которое содержит возраст) –

+0

Преобразуйте его в int –

ответ

1

Вам не нужно обертывать ваши параметры одинарными кавычками (например, «@uye_adresi»), как .NET будет обрабатывать выполнения, что для вас на основе типов параметров, которые он идентифицирует:

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

Кроме того, если вы планируете при переходе целого значения в качестве параметра, рассмотреть вопрос о преобразовании это подходящий тип заранее, используя Convert.ToInt32():

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

Если это не удается, то вы могли бы рассмотреть вопрос об использовании метода Int32.TryParse(), что позволит проверить, если данные является допустимым целым числом, прежде чем продолжить:

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

Большое спасибо! Проблема была в том, что, как вы сказали, эти одинарные кавычки. Когда я их использую, она добавляет текст между одинарными кавычками (вот почему это wasnt значение int). Теперь Я могу успешно представить свой университетский проект;) –

Смежные вопросы

 Смежные вопросы