2010-12-15 4 views
2

다음 쿼리에서 "?" 평균?"?" 검색어에 의미가 있습니까?

this.AdminDelCmd.CommandText = 
    "DELETE FROM Admin WHERE (admincd = ?) AND (terminalno = ?)"; 
+1

언제든지 질문을 잊어 버리셨습니까? – meagar

+0

안녕하세요. 검색어를 추가 할 수 있습니까? – ameer

+1

진정한 질문 인 것처럼 보이지만 실제 "쿼리"가 없기 때문에 하향 투표하십시오. - 너무 모호합니다. OP가 질문을 업데이 트하면 내 downvote을 제거합니다 – InSane

답변

1

보이지 않는 쿼리의 내용에 따라, 아삽이 언급 한 삼항 연산자의 일부 또는 Nullable<type>에 대한 속기가 될 수 있습니다.

그래서 말한다면 :

object.hasProperty ? "true" : "false"; 

는 삼항 연산자입니다;

int? anInt; 

그것이 Nullable<int> anInt을 의미하며, 당신은 당신이 데이터베이스에서 읽고있는 경우 유용 많이 온다 anInt = null;을 작성하고 정수 값을 허용하는 열이, 또는 할 수 있습니다

는 말한다 경우 NULL.

+2

이 질문에는 대답하지 않습니다. 질문은 C# 기능이 아니라 SQL 쿼리에 관한 것입니다. –

+3

그리고 쿼리를 실제로 게시했는지 알 수 있습니다. – Liz

1

admincd AND terminalno 값은 런타임에 데이터 소스에서 확인됩니다.

내가 당신의 데이터 소스가 DataTable을하고는

DataApapter

9

이것은 삼항 연산자 NOT이며, Nullable 형식의 객체가 아닌 경우에 데이터베이스를 업데이트하려고 할 것입니다 생각합니다.

이것은 매개 변수가있는 쿼리라고하며 SQL 주입을 방지하는 데 사용됩니다. 이것은 SQL 구문의 '더 오래된 스타일'입니다. 이 쿼리는 여러 다른 데이터베이스 (예 : MySQL & SQL Server)에서 쿼리를 사용하려는 경우에 사용할 수 있습니다. SQL Server에서도 사용되는 새 스타일 (아래 나와 같이)은 매개 변수 이름 앞에 '@'를 사용합니다. 또한 MySQL은 서버 측 사용자 변수 선언에 '@'를 사용하므로 혼동을 일으킬 수 있습니다.

나중에 코드는 물음표로 채 웁니다. 다음 몇 줄을 게시 할 수 있다면 더 많은 도움이 될 것입니다. 여기

더 철저하게 일을 설명하는 몇 가지 링크입니다 (두 번째 ASP입니다 만 적용) :
http://msdn.microsoft.com/en-us/library/cc296201(v=sql.90).aspx
http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

+2

"표준 C# 구문이 아닙니다"- SQL 구문은 C#과 아무 관련이 없습니다. SQL Server 구문은 명명 된 매개 변수에 @ 접두사를 사용하지만 다른 데이터베이스는 다른 규칙을 가질 수도 있고 명명 된 매개 변수를 전혀 지원하지 않을 수도 있습니다. – Joe

+0

아, 설명해 주셔서 감사합니다. 내가 본 거의 모든 사이트에는 '@'스타일 구문이 있으므로 C#의 표준이라고 생각했습니다. MySQL을 철저히 사용했습니다. – Brandon

0

은 "?" mark는 코드의 뒷부분에 지정 될 매개 변수의 자리 표시 자입니다. 이런 방식으로 SQL 명령을 "Prepared Statement"로 시작하여 미리 컴파일 (구문 분석) 할 수 있으며 나중에 매개 변수를 사용할 수있을 때 실행 중에 더 빨리 수행 할 수 있습니다.

3

이들은 SQL 쿼리에서 (명명 된 매개 변수와 대조적으로) positional parameters입니다.

명령에는 위치 매개 변수가 명령 텍스트에 나타나는 순서와 동일한 순서로 각 위치 매개 변수 (?)에 대해 하나의 매개 변수가 있어야합니다. 당신의 공급자가 명명 된 매개 변수를 지원하지 않는 경우

당신은 일반적으로 위치 매개 변수

  • 를 사용합니다. 예를 들어 많은 OleDb 공급자는 명명 된 매개 변수를 지원하지 않습니다.

  • 또는 여러 공급 업체와의 상호 운용성을 원하는 경우 다른 공급자는 명명 된 매개 변수에 대해 다른 규칙을 사용할 수 있습니다 (예 : SQL Server는 매개 변수 이름에 @ 접두어를 사용하지만 Oracle은 그렇지 않습니다). 따라서 여러 공급자에 대해 동일한 쿼리 구문을 사용하려는 경우 명명 된 매개 변수가 아닌 위치 매개 변수를 사용하는 것이 좋습니다.

관련 문제