SqlCommand.ExecuteScalar メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
クエリを実行し、クエリによって返される結果セットの先頭行の最初の列を返します。 その他の列または行は無視されます。
public:
override System::Object ^ ExecuteScalar();
public:
virtual System::Object ^ ExecuteScalar();
public override object ExecuteScalar ();
public object ExecuteScalar ();
override this.ExecuteScalar : unit -> obj
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Overrides Function ExecuteScalar () As Object
Public Function ExecuteScalar () As Object
戻り値
結果セットの最初の行の最初の列。結果セットが空の場合は、null 参照 (Visual Basic の Nothing
)。 最大 2033 文字を返します。
実装
例外
Value が Stream に設定されたときに、Binary でも VarBinary でもない SqlDbType が使用されました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。
- または -
SqlDbTypeが にTextReader設定されている場合Value、Char、NChar、NVarChar、VarChar、または Xml 以外の が使用されました。
- または -
ロックされた行に対するコマンドの実行中に、例外が発生しました。 Microsoft .NET Framework バージョン 1.0 を使用している場合は、この例外は生成されません。
- または -
ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。
ストリーミング操作中に、SqlConnection が閉じられたか切断されました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。
ストリーミング操作中に、Stream、XmlReader、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。
ストリーミング操作中に、Stream、XmlReader、または TextReader オブジェクトが閉じられました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。
例
次の例では、 を 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();
適用対象
こちらもご覧ください
.NET