Recupero di un singolo valore da un database (ADO.NET)
Può essere necessario restituire informazioni del database costituite semplicemente da un singolo valore anziché da una tabella o da un flusso di dati. È possibile, ad esempio, restituire il risultato di una funzione di aggregazione quale COUNT(*), SUM(Price) o AVG(Quantity). L'oggetto Command consente di restituire singoli valori utilizzando il metodo ExecuteScalar, che 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 utilizzando un SqlCommand. Per restituire il valore della colonna Identity per il record inserito, viene utilizzato il metodo ExecuteScalar.
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
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;
}
Vedere anche
Concetti
Esecuzione di un comando (ADO.NET)
DbConnection, DbCommand e DbException (ADO.NET)