Condividi tramite


Recupero di un singolo valore da un database

Potrebbe essere necessario restituire informazioni sul database che sono semplicemente un singolo valore anziché sotto forma di tabella o flusso di dati. Ad esempio, è possibile restituire il risultato di una funzione di aggregazione, ad esempio COUNT(*), SUM(Price) o AVG(Quantity). L'oggetto Command offre la possibilità di restituire singoli valori usando il metodo ExecuteScalar . Il metodo ExecuteScalar restituisce, come valore scalare, il valore della prima colonna della prima riga del set di risultati.

Nell'esempio di codice seguente viene inserito un nuovo valore nel database usando un oggetto SqlCommand. Il ExecuteScalar metodo viene utilizzato per restituire il valore della colonna Identity per il record inserito.

public static int AddProductCategory(string newName, string connString)
{
    var newProdID = 0;
    const string sql =
        "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
        + "SELECT CAST(scope_identity() AS int)";
    using (SqlConnection conn = new(connString))
    {
        SqlCommand cmd = new(sql, conn);
        cmd.Parameters.Add("@Name", SqlDbType.VarChar);
        cmd.Parameters["@name"].Value = newName;
        try
        {
            conn.Open();
            newProdID = (int)cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    return 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

Vedere anche