SqlParameter 이름 앞에 @를 추가해야 합니까?
응용 프로그램 중 하나에서 매개 변수는 다음과 같은 방식으로 저장 프로시저에 전달되었습니다.
Dim parm As New SqlParameter("searchText", SqlDbType.VarChar)
parm.Direction = ParameterDirection.Input
parm.Size = 50
parm.Value="test"
cmd.Parameters.Add(parm)
절차에는 다음과 같은 매개 변수가 포함됩니다.@searchText
즉, 코드에서 전달된 매개 변수 이름은searchText
저장 프로시저에 있는 것은@searchText
.
하지만 제대로 작동하고 있어요, 항상 필요한 결과를 얻고 있어요.
그래서 제 질문은 파라미터 앞에 @를 지정할 필요가 없다는 것입니까?@를 추가할지 여부에 대해 누구나 이에 대한 답변을 해줄 수 있습니까?
설명서에 따르면 이름은 다음으로 시작해야 합니다.@
:
매개 변수 이름은 @paramname 형식으로 지정됩니다.
소스 코드에 따라(및 참조 소스를 살펴봄),@
필요한 경우 자동으로 추가됩니다.
네, 효과는 있지만, 문서화되지 않은 기능입니다.이에 의존하지 말고 수동으로 매개 변수 이름 앞에 다음과 같이 입력하는 것이 좋습니다.@
.
참조: SqlParameter.매개 변수 이름 속성 및 IDdata 매개 변수입니다.매개 변수 이름 속성
매개 변수 이름은 @paramname 형식으로 지정됩니다.매개 변수에 의존하는 SQL 명령을 실행하기 전에 매개 변수 이름을 설정해야 합니다.SQL 서버를 데이터베이스로 사용하는 경우 매개 변수 이름 앞에 @를 지정해야 합니다.
매개 변수 이름은 백엔드와 동일해야 합니다. 예를 들어,@searchText
그런 다음 매개 변수 사양에서 다음과 같아야 합니다.SqlParameter("@searchText"
..
당신의 코드는 다음과 같아야 합니다.
Dim parm As New SqlParameter("@searchText", SqlDbType.VarChar)
parm.Direction = ParameterDirection.Input
parm.Size = 50
parm.Value="test"
cmd.Parameters.Add(parm)
참고: Oracle과 SqLite는 매개 변수를 지정하기 위해 서로 다른 사용 문자를 사용하며 ado.net 사양에서 지정한 @ 기호가 사용되지 않을 수 있습니다.
편집: 주석별
링크를 지정한 것처럼 링크도 일종의 수정이지만 msdn 설명서에 따르면 데이터 공급자 oledb, sql, odbc 중 하나를 사용하는지 여부에 따라 위치 매개 변수를 '@'로 지정해야 합니다.참조
if (0 < parameterName.get_Length() && '@' != parameterName.get_Chars(0))
{
parameterName = "@" + parameterName;
}
@를 지정할 필요는 없습니다.하지만, 이것은 최선의 방법입니다.
그것은 현악기와 유사합니다.문자열을 에서와 같이 정의해도 아무런 문제가 없습니다.NET:
string s;
//Rest of the code follows;
그러나 다음과 같이 정의하는 것이 좋습니다.
string s = string.Empty;
아시다시피, 그것은 관례와 모범 사례의 문제입니다!!!
매개 변수 이름에 "@" 마커를 추가하는 것이 좋습니다.SqlParameter는 자동으로 추가하는 데 도움이 되지만 다른 사용자의 매개 변수는 그렇지 않을 수 있습니다.
"@" 기호가 필요합니까?한마디로 이야기할 수 없군요.DbCommand를 사용하여 매개 변수를 추가하는 경우 SQL Server 사용 여부에 관계없이 선택 사항입니다.
// Look Ma no @ required!
DbCommand command = database.GetStoredProcCommand("StoredProctologistAndGambler");
database.AddInParameter(command, "Bet", DbType.Int32, fromLineNumber);
database.AddOutParameter(command, "Diagnosis", DbType.String, -1);
그러나 나중에 명령을 참조하려면 "@" 접두사가 필요합니다.마이크로소프트는 이를 API의 나머지 부분으로 옮기는 것이 너무 어렵다고 판단했습니다.
var examResult = command.Parameters["@Diagnosis"]; // Ma! Microsoft lied! It requires the "@" prefix.
언급URL : https://stackoverflow.com/questions/10245510/is-it-necessary-to-add-a-in-front-of-an-sqlparameter-name
'programing' 카테고리의 다른 글
"'ng'이라는 용어가 cmdlet의 이름으로 인식되지 않습니다."라는 메시지 (0) | 2023.05.14 |
---|---|
MVC / MVP / MVVM 대체 뭐야? (0) | 2023.05.14 |
MongoDB에서 중첩 인덱스를 만드는 방법은 무엇입니까? (0) | 2023.05.14 |
Postgres가 서버에 연결할 수 없습니다. (0) | 2023.05.14 |
Interop을 사용하여 Excel에서 비어 있지 않은 마지막 열 및 행 인덱스 가져오기 (0) | 2023.05.14 |