SqlCommand.ExecuteScalar Metoda

Definice

Spustí dotaz a vrátí první sloupec prvního řádku v sadě výsledků vrácených dotazem. Další sloupce nebo řádky se ignorují.

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

Návraty

Object

První sloupec prvního řádku v sadě výsledků nebo nulový odkaz (Nothingv Visual Basic), pokud je sada výsledků prázdná. Vrátí maximálně 2033 znaků.

Implementuje

Výjimky

Jiný SqlDbType než Binary nebo VarBinary byl použit při Value nastavení na Stream. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

-nebo-

Jiná SqlDbType než Char, NChar, NVarChar, VarChar nebo Xml byla použita při Value nastavení na TextReader.

-nebo-

Jiná SqlDbType než Xml byla použita, když Value byla nastavena na XmlReader.

Při provádění příkazu na uzamčený řádek došlo k výjimce. Tato výjimka se nevygeneruje, pokud používáte Microsoft .NET Framework verze 1.0.

-nebo-

Během operace streamování došlo k vypršení časového limitu. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Zavřený SqlConnection nebo vyřazený během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Během operace streamování došlo k chybě nebo StreamXmlReader TextReader objektu. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Během Streamoperace streamování došlo k zavření objektu nebo TextReader objektuXmlReader. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Příklady

Následující příklad vytvoří SqlCommand a pak ho spustí pomocí ExecuteScalar. Příklad je předán řetězec představující novou hodnotu, která se má vložit do tabulky, a řetězec, který se použije pro připojení ke zdroji dat. Funkce vrátí novou hodnotu sloupce Identity , pokud byl vložen nový řádek, 0 při selhání.

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

Poznámky

Použijte metodu ExecuteScalar k načtení jedné hodnoty (například agregační hodnoty) z databáze. To vyžaduje méně kódu než použití ExecuteReader metody a následné provádění operací, které potřebujete k vygenerování jedné hodnoty pomocí dat vrácených SqlDataReadersadou .

Typický ExecuteScalar dotaz je možné naformátovat jako v následujícím příkladu jazyka C#:

cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";  
Int32 count = (Int32) cmd.ExecuteScalar();  

Platí pro

Viz také