Çözüldü C# SQL kodundaki hata ne?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

DipHangs

Hectopat
Katılım
23 Ocak 2021
Mesajlar
586
Çözümler
5
SQL'ye veri eklemeye çalıştım fakat hata verdi, neyi yanlış yaptım?
Not: Göstermede hata yok ekleme kısmında var yani button_2 de hata resmi ektedir.
Kodum:
C#:
private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=sa;Integrated Security=True");
            conn.Open();
            SqlCommand liste = new SqlCommand("select * from isci", conn);
            SqlDataAdapter da = new SqlDataAdapter(liste);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            conn.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=sa;Integrated Security=True");
            conn.Open();
            SqlCommand ekle = new SqlCommand($"Insert into isci (isim,maas) values (@pisim,@pmaas)", conn);
            ekle.Parameters.AddWithValue(@"pisim", textBox1.Text);
            ekle.Parameters.AddWithValue(@"maas", (textBox2.Text).ToString());

            ekle.ExecuteNonQuery();
            conn.Close();


        }
    }
 
Çözüm
2. Eklenen değeri parantez içinden çıkarın.

SqlCommand ekle = new SqlCommand($"Insert into isci (isim,maas) values (@pisim,@pmaas)", conn); ekle.Parameters.AddWithValue(@"pisim", textBox1.Text); ekle.Parameters.AddWithValue(@"maas", (textBox2.Text).ToString());

Bu şekilde yapın;

C#:
SqlCommand ekle = new SqlCommand($"INSERT INTO isci (isim,maas) values (@pisim,@pmaas)", conn);
ekle.Parameters.AddWithValue(@"pisim", textBox1.Text);
ekle.Parameters.AddWithValue(@"pmaas", textBox2.Text.ToString().Trim());

Ardından veri tabanı tablosu içinde yer alan sütun tiplerini kontrol edin.
Veri tabanı tarafinda isci tablosundaki maas Field'i varchar olarak mi tanimli yoksa int mi? Maasi string olarak yazmaya calisiyorsa, tip hatasi olabilir, loglara bakin.
 
SQL'ye veri eklemeye çalıştım fakat hata verdi, neyi yanlış yaptım?
Not: Göstermede hata yok ekleme kısmında var yani button_2 de hata resmi ektedir.
Kodum:
C#:
private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=sa;Integrated Security=True");
            conn.Open();
            SqlCommand liste = new SqlCommand("select * from isci", conn);
            SqlDataAdapter da = new SqlDataAdapter(liste);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            conn.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=sa;Integrated Security=True");
            conn.Open();
            SqlCommand ekle = new SqlCommand($"Insert into isci (isim,maas) values (@pisim,@pmaas)", conn);
            ekle.Parameters.AddWithValue(@"pisim", textBox1.Text);
            ekle.Parameters.AddWithValue(@"maas", (textBox2.Text).ToString());

            ekle.ExecuteNonQuery();
            conn.Close();


        }
    }
"@pisim" ve "@pmaas" olmalı AddWithValue fonksiyonundaki parametreler.
 
//////////////
this._connectionString="SERVER=tcp:192.168.1.214,1433;DATABASE=RohanWeb;UID=sa;PWD=123456789";
SqlConnection connection = new SqlConnection(this._connectionString);

ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
Console.WriteLine("SQL State 1");
connection.Open();
}
else
{
Console.WriteLine("SQL State 0");
}
//////////////////////
Bağlanıp bağlanmadığını kontrol edersiniz.
// veya kullanıcı adı ile aşağıdaki şekilde girebilirsiniz.

this._connectionString=SERVER=ASUSFORMULA\SQLEXPRESS;DATABASE=RohanWeb;UID=sa;PWD=123456789

this._connectionString=SERVER=(local)\SQLEXPRESS;DATABASE=RohanWeb;UID=sa;PWD=123456789
 
Varchar olarak tanımlı nasıl int yapabilirim?

Öylede hata veriyor.

Varchar olarak tanimliysa sorun yok o zaman, sonucta (textBox2.Text).ToString() diyerek, stringe cevrilmis, gerci textboxdan da string geliyordu.

Maas int olarak tanimliysa o zaman skinti ki degil dediniz zaten. Connection stringde hata yoksa, button 1 verileri cekebiliyorsa tablosal bir şey var.

İsci tablosunda sadece iki field mi var? İsim, maas mi var sadece? İdentty falan var mi ID gibi?
Eger otomatik artanda degilse, bu da hata verdirtebilir.
 
Son düzenleme:
Varchar olarak tanimliysa sorun yok o zaman, sonucta (textBox2.Text).ToString() diyerek, stringe cevrilmis, gerci textboxdan da string geliyordu.

Maas int olarak tanimliysa o zaman skinti ki degil dediniz zaten. Connection stringde hata yoksa, button 1 verileri cekebiliyorsa tablosal bir şey var.

İsci tablosunda sadece iki field mi var? İsim, maas mi var sadece? İdentty falan var mi ID gibi?
Eger otomatik artanda degilse, bu da hata verdirtebilir.
otomatik artan bir değişken var
 
2. Eklenen değeri parantez içinden çıkarın.

SqlCommand ekle = new SqlCommand($"Insert into isci (isim,maas) values (@pisim,@pmaas)", conn); ekle.Parameters.AddWithValue(@"pisim", textBox1.Text); ekle.Parameters.AddWithValue(@"maas", (textBox2.Text).ToString());

Bu şekilde yapın;

C#:
SqlCommand ekle = new SqlCommand($"INSERT INTO isci (isim,maas) values (@pisim,@pmaas)", conn);
ekle.Parameters.AddWithValue(@"pisim", textBox1.Text);
ekle.Parameters.AddWithValue(@"pmaas", textBox2.Text.ToString().Trim());

Ardından veri tabanı tablosu içinde yer alan sütun tiplerini kontrol edin.
 
Son düzenleme:
Çözüm
2. Eklenen değeri parantez içinden çıkarın.



Bu şekilde yapın;

C#:
SqlCommand ekle = new SqlCommand($"INSERT INTO isci (isim,maas) values (@pisim,@pmaas)", conn);
ekle.Parameters.AddWithValue(@"pisim", textBox1.Text);
ekle.Parameters.AddWithValue(@"pmaas", textBox2.Text.ToString().Trim());

Ardından veri tabanı tablosu içinde yer alan sütun tiplerini kontrol edin.
Hata mesajı veya log görmeden bir şey diyemem.
sorunu çözdüm sağolun çalışan kod;
conn.Open();
SqlCommand ekle = new SqlCommand("INSERT INTO isci (isim, maas) VALUES (@pisim, @pmaas)", conn);\\isci table adı
ekle.Parameters.AddWithValue("@pisim", textBox1.Text);
ekle.Parameters.AddWithValue("@pmaas", textBox2.Text);
ekle.ExecuteNonQuery();
conn.Close();
 

Technopat Haberler

Geri
Yukarı