>

수정 : SQL 삽입에 대해 알고 있습니다.

먼저, 나는 코딩 방법이 끔찍하다는 것을 알고 있지만, 지금은 C #의 초급자입니다.

SQL 서버에서 데이터를 읽고 텍스트 상자에 표시하려고합니다. 사용자가 일부 데이터를 쓰거나 cmbbox에서 선택하려고합니다.

cmbIl.Text, cmbIlce.Text, cmbMahalle.Text, txtAda.Text, txtPafta.Text

검색 버튼을 누르십시오.

해당 데이터가 SQL 데이터베이스의 값과 일치하면 (true) 다른 데이터가 가져 와서 표시됩니다

txtTapuKodu.Text, txtPafta.Text, txtTapuAlani.Text, txtNitelik.Text, rtxtImarDurumu.Text

하지만 아래 코드는 오류가 발생합니다 :

System.Data.SqlClient.SqlException: 'Incorrect syntax near ','.'

private void btnSorgula_Click(object sender, EventArgs e)
        {
            string source = @"Data Source=YAGIZ-PC;Initial Catalog=imar_sorgu;Integrated Security=True";
            SqlConnection con = new SqlConnection(source);
            con.Open();
            string sqlSelectQuery = "SELECT * FROM tablo_arsa WHERE il = '" + cmbIl.Text + "', ilce = '" + cmbIlce.Text + "', mahalle = '" + cmbMahalle.Text + "', ada = '" + txtAda.Text + "', parsel = '" + txtParsel.Text + "'";
            /* string sqlSelectQuery2 = "SELECT * FROM tablo_arsa WHERE ilce ='" + cmbIlce.Text + "'";
            string sqlSelectQuery3 = "SELECT * FROM tablo_arsa WHERE mahalle ='" + cmbMahalle.Text + "'";
            string sqlSelectQuery4 = "SELECT * FROM tablo_arsa WHERE ada = " + txtAda.Text;
            string sqlSelectQuery5 = "SELECT * FROM tablo_arsa WHERE parsel = " + txtParsel.Text; */
            SqlCommand cmd = new SqlCommand(sqlSelectQuery, con);
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.Read())
            {
                txtTapuKodu.Text = (dr["tapu_kodu"].ToString());
                txtPafta.Text = (dr["pafta"].ToString());
                txtTapuAlani.Text = (dr["tapu_alani"].ToString());
                txtNitelik.Text = (dr["nitelik"].ToString());
                rtxtImarDurumu.Text = (dr["imar_durumu"].ToString());
                MessageBox.Show("İstek başarıyla okundu.");
            }
            else
            {
                MessageBox.Show("Okuma başarısız.");
            }
            con.Close();
        }


  • 답변 # 1

    문제는 where 절에 술어 사이에 쉼표가 포함되어 있다는 것입니다. 대신 AND를 사용하십시오.

    변경 :

       string sqlSelectQuery = "SELECT * FROM tablo_arsa WHERE il = '" + cmbIl.Text + "', ilce = '" + cmbIlce.Text + "', mahalle = '" + cmbMahalle.Text + "', ada = '" + txtAda.Text + "', parsel = '" + txtParsel.Text + "'";
    
    

    to :

       string sqlSelectQuery = "SELECT * FROM tablo_arsa WHERE il = '" + cmbIl.Text + "' AND ilce = '" + cmbIlce.Text + "' AND mahalle = '" + cmbMahalle.Text + "' AND ada = '" + txtAda.Text + "' AND parsel = '" + txtParsel.Text + "'";
    
    

    그러나 SQL INJECTION에 대해 읽어보십시오. 매우 나쁜 보안 문제이며 완벽한 예입니다.

관련 자료

  • 이전 자바 스크립트 파일 js에서 C # 변수에 액세스
  • 다음 r - 세 개의 데이터 프레임에서 각 요소의 표준 편차 찾기