2011-09-19 5 views
0

나는 코드를 사용 : 나는 데이터베이스에 삽입 값을 사용하도록동일한 클릭 이벤트에서 두 개의 검색어를 어떻게 사용할 수 있습니까?

protected void Button1_Click(object sender, EventArgs e) 
{ 
    DataSet ds = new DataSet(); 
    SqlConnection con = new SqlConnection("server=kiran-b946c0f6d; 
              uid=sa; 
              pwd=123; 
              database=employe"); 

    SqlCommand com=new SqlCommand("INSERT INTO Emplo VALUES('"+TextBox2.Text+"'",con); 
    com.Parameters.Add("Email_ID", SqlDbType.VarChar); 
    com.Parameters["Email_ID"].Value = TextBox2.Text; 
    con.Open(); 

    Label3.Text = "successfully added"; 
    SqlDataReader reader = null; 
    com = new SqlCommand("SELECT Email_ID FROM Emplo WHERE Email_ID='" 
         + TextBox2.Text + "'", 
         con); 

    reader = com.ExecuteReader(); 
    if (reader != null && reader.HasRows) 
    { 
     Label3.Text = "Emailid alraedy exist"; 
    } 

    reader.Dispose(); 

    SqlDataAdapter da = new SqlDataAdapter(com); 
    da.Fill(ds); 

    GridView1.DataSource = ds; 
    GridView1.DataBind(); 
    con.Close(); 
} 

을하고 이중성이있는 경우, 그것은 됩니다이 이중성이 properly.But 삽입이 제대로되지 작동 표시됩니다 working.It 성공적으로 삽입 된 것으로 표시됩니다. 그러나 값은 삽입을 수행하지 않습니다.

+4

경고 ** ** 귀하의 코드는 SQL 주입 공격에 취약합니다. –

+3

경고 2 : 사용자 인터페이스 관리로 데이터 액세스 코드를 엉망으로 만들었으므로이 두 가지 다른 고려 사항을 분리하고 모든 데이터 액세스 논리를 데이터 검색 및 데이터베이스 연결을 담당 할 수있는 유일한 클래스 라이브러리에 포함시켜야합니다 . –

+1

WARNING3 : 소스 코드에 연결 자격 증명을 저장하여 자격 증명을 업데이트 할 때마다 응용 프로그램을 다시 컴파일해야하며 대신 Application Configuration 및 ConnectionStrings (더 나은 사용법을 익히십시오)를 사용하십시오 – sll

답변

3

com 변수를 덮어 쓰기 전에 실제로는 com.ExecuteNonQuery()을 호출하지 않습니다.

0

삽입을 전혀 실행하지 않습니다. 명령을 설정 한 다음 새 선택 명령으로 덮어 씁니다.

그 시점에서 삽입 기능을 실행했다하더라도, 방금 삽입했기 때문에 선택 항목이 항상 true를 반환 할 것으로 예상됩니다. 또한 데이터베이스 구조에 따라 해당 데이터베이스 필드가 고유하게 설정되어있는 경우 (코드에서 시행하려는 것으로 보이는 것), 이미 존재하는 것을 삽입하려고하면 SQL 예외가 발생할 것으로 예상됩니다.

선택을 실행하여 선택 항목이 이미 존재하는지 확인하십시오. 그럼 존재한다면 그냥 멈출 수 있습니다. 존재하지 않으면 삽입을 할 수 있습니다.

또는 더 나은 여전히 ​​두 개의 스레드 doign 수표에 대한 가능한 문제를 방지하기 위해 삽입과 동시에 확인을 수행하는 하나의 SQL 문 (더 나은 절차)을 작성하고 발견하지 않습니다 삽입을하는 두 개의 쓰레드가 그 중 하나가 실패 할 가능성이 높습니다.

관련 문제