none
System.Data.OleDb.OleDbException: 'Gerekli bir veya daha fazla parametre için girilen değer yok.' hatası RRS feed

  • Soru

  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.OleDb;
    namespace Eggs_Yumurtacılık_Resmi_Uygulaması
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
            OleDbConnection baglanti = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source = Yumurta.accdb");
            private void Form2_Load(object sender, EventArgs e)
            {
                OleDbDataAdapter da = new OleDbDataAdapter("select * from Bilgi", baglanti);
                DataTable tab = new DataTable();
                da.Fill(tab);
                dataGridView1.DataSource = tab;
    
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                baglanti.Open();
    
    
                OleDbCommand komut = new OleDbCommand();
                komut.Connection = baglanti;
    
                komut.CommandText = ("INSERT INTO Bilgi (Musteri,Telefon,YumurtaTuru,KoliSayi,Adres) VALUES ("+textBox1.Text+",'"+textBox2.Text+"','" + textBox3.Text + "','" + textBox4.Text + "','"+textBox5.Text+"') ");
    
                komut.ExecuteNonQuery();
    
                DataTable tab = new DataTable();
    
                OleDbDataAdapter da = new OleDbDataAdapter("Select * from Bilgi", baglanti);
                da.Fill(tab);
                dataGridView1.DataSource=tab;
    
    
                baglanti.Close();
            }
        }
    }
    
    Programı çalıştırıp veri eklemeye çalıştığımda başlıktaki hatayı veriyor. Veritabanını her şeyi kontrol ettim ama olmuyor. Lütfen Yardım edin.
    24 Ocak 2019 Perşembe 12:18

Yanıtlar

  • Burasi da dahil olmak uzere internette her yerde, bu sekilde SQL cümlesi yazmayın, boyle SQL cümlesi yazarak öğreten yerlerden uzak durun, parametre kullanın diye yazıyor ama ne yazık ki uygulanmıyor. Parametre kullanilmasinin bir nedeni de boyle hataları onlemek:

    private void button1_Click(object sender, EventArgs e)
    {
    	using (OleDbConnection con = new OleDbConnection(baglanti.ConnectionString))
    	using (OleDbCommand komut = new OleDbCommand())
    	{
    		komut.Connection = baglanti;
    		komut.CommandText = @"INSERT INTO Bilgi 
    			(Musteri,Telefon,YumurtaTuru,KoliSayi,Adres) VALUES 
    			(@Musteri,@Telefon,@YumurtaTuru,@KoliSayi,@Adres)";
    		komut.Parameters.Add("@Musteri", OleDbType.VarChar).Value = textBox1.Text;
    		komut.Parameters.Add("@Telefon", OleDbType.VarChar).Value = textBox2.Text;
    		komut.Parameters.Add("@YumurtaTuru", OleDbType.VarChar).Value = textBox3.Text;
    		int koli;
    		int.Parse(textBox4.Text, out koli);
    		komut.Parameters.Add("@KoliSayi", OleDbType.Integer).Value = koli;
    		komut.Parameters.Add("@Adres", OleDbType.VarChar).Value = textBox5.Text;
    
    		baglanti.Open();
    		komut.ExecuteNonQuery();
    		baglanti.Close();
    	}
    	DataTable tab = new DataTable();
    	OleDbDataAdapter da = new OleDbDataAdapter("Select * from Bilgi", baglanti.ConnectionString);
    	da.Fill(tab);
    	dataGridView1.DataSource = tab;
    }

    24 Ocak 2019 Perşembe 12:38
    Yanıtlayıcı

Tüm Yanıtlar

  • Burasi da dahil olmak uzere internette her yerde, bu sekilde SQL cümlesi yazmayın, boyle SQL cümlesi yazarak öğreten yerlerden uzak durun, parametre kullanın diye yazıyor ama ne yazık ki uygulanmıyor. Parametre kullanilmasinin bir nedeni de boyle hataları onlemek:

    private void button1_Click(object sender, EventArgs e)
    {
    	using (OleDbConnection con = new OleDbConnection(baglanti.ConnectionString))
    	using (OleDbCommand komut = new OleDbCommand())
    	{
    		komut.Connection = baglanti;
    		komut.CommandText = @"INSERT INTO Bilgi 
    			(Musteri,Telefon,YumurtaTuru,KoliSayi,Adres) VALUES 
    			(@Musteri,@Telefon,@YumurtaTuru,@KoliSayi,@Adres)";
    		komut.Parameters.Add("@Musteri", OleDbType.VarChar).Value = textBox1.Text;
    		komut.Parameters.Add("@Telefon", OleDbType.VarChar).Value = textBox2.Text;
    		komut.Parameters.Add("@YumurtaTuru", OleDbType.VarChar).Value = textBox3.Text;
    		int koli;
    		int.Parse(textBox4.Text, out koli);
    		komut.Parameters.Add("@KoliSayi", OleDbType.Integer).Value = koli;
    		komut.Parameters.Add("@Adres", OleDbType.VarChar).Value = textBox5.Text;
    
    		baglanti.Open();
    		komut.ExecuteNonQuery();
    		baglanti.Close();
    	}
    	DataTable tab = new DataTable();
    	OleDbDataAdapter da = new OleDbDataAdapter("Select * from Bilgi", baglanti.ConnectionString);
    	da.Fill(tab);
    	dataGridView1.DataSource = tab;
    }

    24 Ocak 2019 Perşembe 12:38
    Yanıtlayıcı
  • Peki veritabanından veri silmek için ne yapmalıyız?
    • Düzenleyen seri13 24 Ocak 2019 Perşembe 13:06
    24 Ocak 2019 Perşembe 12:45
  • Kisa cevap "delete" komutunu kullanmalisiniz. Uzun cevap, tercihan once veritabvanlarini calismali, access gibi ofis araclarini database niyetine kullanmamalisiniz.

    komut.CommandText = @"delete from tabloAdi where id = @Id";
    
    komut.Parameters.Add("@id", OleDbType.Integer).Value = ...;

    24 Ocak 2019 Perşembe 13:26
    Yanıtlayıcı