SqlCommand.ExecuteScalar 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
쿼리를 실행하고 쿼리에서 반환된 결과 집합에서 첫 번째 행의 첫 번째 열을 반환합니다. 추가 열 또는 행은 무시됩니다.
public:
virtual System::Object ^ ExecuteScalar();
public:
override System::Object ^ ExecuteScalar();
public object ExecuteScalar();
public override object ExecuteScalar();
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Function ExecuteScalar () As Object
Public Overrides Function ExecuteScalar () As Object
반품
결과 집합에서 첫 번째 행의 첫 번째 열이거나 결과 집합이 비어 있으면 null 참조(Visual Basic Nothing)입니다. 최대 2033자를 반환합니다.
구현
예외
SqlDbType 이진 또는 VarBinary 이외의 다른 항목은 로 설정Value되었을 때 Stream 사용되었습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.
-또는-
SqlDbType Char, NChar, NVarChar, VarChar 또는 Xml 이외의 다른 항목은 로 설정Value되었을 때 TextReader 사용되었습니다.
-또는-
잠긴 행에 대해 명령을 실행하는 동안 예외가 발생했습니다. 이 예외는 Microsoft .NET Framework 버전 1.0을 사용할 때 생성되지 않습니다.
-또는-
스트리밍 작업 중에 시간 제한이 발생했습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.
SqlConnection 스트리밍 작업 중에 닫혔거나 삭제된 경우 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.
스트리밍 작업 중 또는 StreamXmlReader 개체에서 TextReader오류가 발생했습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.
Stream또는 XmlReaderTextReader 개체가 스트리밍 작업 중에 닫혔습니다. 스트리밍에 대한 자세한 내용은 SqlClient 스트리밍 지원을 참조하세요.
예제
다음 예제에서는 a를 SqlCommand 만든 다음 ExecuteScalar. 이 예제에서는 테이블에 삽입할 새 값을 나타내는 문자열과 데이터 원본에 연결하는 데 사용할 문자열을 전달합니다. 이 함수는 새 행 이 삽입된 경우 새 ID 열 값을 반환하고 실패하면 0을 반환합니다.
static public int AddProductCategory(string newName, string connString)
{
Int32 newProdID = 0;
string sql =
"INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
+ "SELECT CAST(scope_identity() AS int)";
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@name"].Value = newName;
try
{
conn.Open();
newProdID = (Int32)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return (int)newProdID;
}
Public Function AddProductCategory( _
ByVal newName As String, ByVal connString As String) As Integer
Dim newProdID As Int32 = 0
Dim sql As String = _
"INSERT INTO Production.ProductCategory (Name) VALUES (@Name); " _
& "SELECT CAST(scope_identity() AS int);"
Using conn As New SqlConnection(connString)
Dim cmd As New SqlCommand(sql, conn)
cmd.Parameters.Add("@Name", SqlDbType.VarChar)
cmd.Parameters("@Name").Value = newName
Try
conn.Open()
newProdID = Convert.ToInt32(cmd.ExecuteScalar())
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
Return newProdID
End Function
설명
이 메서드를 ExecuteScalar 사용하여 데이터베이스에서 단일 값(예: 집계 값)을 검색합니다. 이렇게 하려면 메서드를 사용하는 ExecuteReader 것보다 적은 코드가 필요하고, 다음에서 반환 SqlDataReader된 데이터를 사용하여 단일 값을 생성하는 데 필요한 작업을 수행합니다.
일반적인 ExecuteScalar 쿼리는 다음 C# 예제와 같이 형식을 지정할 수 있습니다.
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();