C# Asp.net Hatası Incorrect syntax near '='. (Select * from...) Id almıyor nerede hata yapıyorum?

0

Incorrect syntax near '='. (Select * from Kontratlar Where KontratId=)

hatasını alıyorum

Problemimi biliyorum. Id almıyor ama bir türlü sorunu çözemedim

Kontratdetay.aspx?KontratId=4 şeklinde otomatik sorunsuz Id yide problemsiz gönderiyorum sayfaya

DataRow dr = system.GetDataRow("Select * from Kontratlar Where KontratId=" + KontratId);

DataRow dr = system.GetDataRow("Select * from Kontratlar Where KontratId=4"); şeklinde kendim save lersem açıyor ama otomatik idi alamıyorum. Id yide problemsiz gönderiyorum sayfaya

Kodlarım aşağıdadır.

 

using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public partial class Admin_Kontratdetay : System.Web.UI.Page
{
    SiteAyar system = new SiteAyar();
    public string KontratId = "";


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!isPostBack)
        {



            DataRow dr = system.GetDataRow("Select * from Kontratlar Where KontratId=" + KontratId);
            if (dr != null)
            {
                trlDairesi.Text = dr["Dairesi"].ToString();
                trlMahallesi.Text = dr["Mahallesi"].ToString();
                trlSokagi.Text = dr["Sokagi"].ToString();
                trlCinsi.Text = dr["Cinsi"].ToString();
                ltrlKirayaVerenAdiSoyadi.Text = dr["KirayaVerenAdiSoyadi"].ToString();
                ltrlKirayaVerenTc.Text = dr["KirayaVerenTc"].ToString();
                ltrlKirayaVerenIkamet.Text = dr["KirayaVerenIkamet"].ToString();
                ltrlKiraciAdiSoyadi.Text = dr["KiraciAdiSoyadi"].ToString();
                ltrlKiraciIkametgah.Text = dr["KiraciIkametgah"].ToString();
                ltrlKiraciİsAdres.Text = dr["KiraciİsAdres"].ToString();
                ltrlBirAylikKiraRakam.Text = dr["BirAylikKiraRakam"].ToString();
                ltrlBirAylikKiraYazi.Text = dr["BirAylikKiraYazi"].ToString();
                ltrlBirsenelikKiraRakam.Text = dr["BirsenelikKiraRakam"].ToString();
                ltrlBirsenelikKiraYazi.Text = dr["BirsenelikKiraYazi"].ToString();
                ltrlOdemeSekli.Text = dr["OdemeSekli"].ToString();
                ltrlKiraMuddeti.Text = dr["KiraMuddeti"].ToString();
                ltrlaslangictarihi.Text = dr["Baslangictarihi"].ToString();
                ltrlSimdikiDurumu.Text = dr["SimdikiDurumu"].ToString();
                ltrlNeİcinKullanacagi.Text = dr["NeİcinKullanacagi"].ToString();
                ltrlyilinkirasi.Text = dr["tarihindenitibaren"].ToString();
                ltrloraninda.Text = dr["oraninda"].ToString();
                ltrlyilkirasiayliknet.Text = dr["yilkirasiayliknet"].ToString();
                ltrlodenecektir.Text = dr["odenecektir"].ToString();
                ltrlnakit.Text = dr["nakit"].ToString();
                ltrlkarsiligi.Text = dr["karsiligi"].ToString();
                ltrlgunu.Text = dr["gunu"].ToString();
                ltrlbankasi.Text = dr["bankasi"].ToString();
                ltrlsubesi.Text = dr["subesi"].ToString();
                ltrlnoluhesabina.Text = dr["noluhesabina"].ToString();
                ltrladinayatirilacaktir.Text = dr["adinayatirilacaktir"].ToString();
                ltrlmahkemeleri.Text = dr["mahkemeleri"].ToString();
                ltrlKiraciAdiSoyadi0.Text = dr["KiraciAdiSoyadi"].ToString();
                ltrlKirayaVerenAdiSoyadi0.Text = dr["KirayaVerenAdiSoyadi"].ToString();



               


            }
            else
                Response.Redirect("Kontratlar.aspx");
        }
    }

   

    public bool isPostBack { get; set; }
}
 

 

taner taner (1)
10 yıl önce sordu

  • system nesnesi nedir? Ergin Bey'in yazdığı yöntemi kullanabilirsiniz. Güvenlidir. Int türü haricinde veri kabul etmez. murat 10 yıl önce

Toplam 4 Cevap


1

Page Load Evetntinde adres satırındaki  KontratId parametresimi Request ile almayı unutmuşsunuz.

protected void Page_Load(object sender, EventArgs e)
        {
            int KontratId=0;
            Int32.TryParse(Request.QueryString["KontratId"], out KontratId);
        }

Şeklinde parametre ile gelen değeri alabilirsiniz. 

Fakat kullanıcıdan gelecek değerlere güvenmemek lazım ve string birleştirme yapmak yerine  Sqlparameter kullanmanızı öneririm. 

Aksi takdirde yazdığınız kodlar SQL Injection'a açık hale gelecektir ki bu da sitenizn hack edilmesine sebebiyet verir.

Yukarıdaki kod  Querystring üzerinden gelen KontratId değerimi alacak Int değere çevirmeyi deneyecektir. Nispeten kullanıcı parametre değerimi eli ile değiştirir veya int yerine string girerse kodunuz hataya düşmeyecektir.
    

ergin ergin (2539)
10 yıl önce cevaplandı

    0

     KontratId değeri NULL geliyor  çünkü Page Load olayında  adres satırı üzerinden gelen veriyi almamışsınız. 

    Request["KontratId"]

    ile önce değeri almalı sonra SQL sorgunuzu oluşturmalısınız.

    murat murat (12547)
    10 yıl önce cevaplandı

      0

      teşekkürler

                 DataRow dr = system.GetDataRow("Select * from Kontratlar Where KontratId=" + Request["KontratId"]);

      şeklinde işimi hallettim

      taner taner (1)
      10 yıl önce cevaplandı

        0

        protected void Page_Load(object sender, EventArgs e)
                {
                    int KontratId=0;
                    Int32.TryParse(Request.QueryString["KontratId"], out KontratId);
        DataRow dr = system.GetDataRow("Select * from Kontratlar Where KontratId=" + KontratId.ToString());
                }

        Daha doğru olacaktır. Hiç bir zaman kullanıcıdan gelen verileri sorgunuzun içerisine doğrudan yerleştirmeyin.

         

        hakan hakan (15475)
        10 yıl önce cevaplandı

          üyelik gerektirir

          Cevap yazabilmek için üye girişi yapmalısınız.

          Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
          uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol