2009-11-09 5 views
1

예를 들어, 테이블이 있고 'Tags'라는 열이 있습니다. 이 열에 가치 '프로그래밍'이 있는지 알고 싶습니다. 어떻게 ADO.NET에서 이것을 할 수 있습니까?그런 가치가 데이터베이스에 있는지 어떻게 알 수 있습니까? (ADO.NET)

나는 이것을했다 :

OleDbCommand cmd = new OleDbCommand("SELECT * FROM table1 WHERE Tags='programming'", conn); 
OleDbDataReader = cmd.ExecuteReader();
다음에해야 할 일은 무엇입니까?

답변

1

더 나은 버전을 (당신이 연결을 설정하고 사용하는 방법을 알고 가정은)는 참조 대신 문자열 연결의 매개 변수를 사용하는 것이 좋습니다 sql injection

OleDbCommand cmd = new OleDbCommand("SELECT TOP 1 1 
FROM table1 WHERE Tags=?", conn); 
cmd.Parameters.Add("@p1", OleDbType.VarChar).Value = "Programming"; 
OleDbDataReader rdr = cmd.ExecuteReader(); 
if(rdr.Read()) 
    // record exists 
else 
    //Not exists 
5

SELECT COUNT (*)를 사용하고 결과를 확인하십시오. (및 ExecuteScalar는 사용)

3
SELECT TOP 1 1 
FROM table1 
WHERE Tags='programming' 
+0

이 솔루션은 올바른 태그가있는 행 하나가 발생하자마자 서버가 처리를 중단하기 때문에 사용자 또는 Dani의 솔루션보다 좋습니다. coloumn이 색인되지 않으면 표 스캔을 방지합니다. –

1
당신은 두 가지 않습니다해야

: 당신은 Y를

그냥 태그라는 프로그램의 존재를 확인하는 경우 변경해야 모든 행을 반환하는 대신 COUNT를 반환하는 쿼리

SELECT TOP 1 Column1 FROM Table1 WHERE Tags = 'Programming'

당신은 확인해야 어떤 행이 있는지 확인하기 위해 리더 설정 돌아왔다. 있는 경우 태그가 있음을 의미합니다.

관련 문제