使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。与使用 ExecuteReader 方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少。
典型的 ExecuteScalar 查询可以采用类似于下面的 C# 示例的格式:
CommandText = "select count(*) as NumberOfRegions from region";
Int count = (int) ExecuteScalar();
例子:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="vb" runat="server">
Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
If Not IsPostBack Then
Dim dtStartDate As DateTime = DateTime.Now.AddDays(-7)
Dim dtEndDate As DateTime = DateTime.Now.AddDays(-1)
startdate.Text = dtStartDate.ToShortDateString
enddate.Text = dtEndDate.ToShortDateString
literal1.Text = GetEditionNumber()
End If
End Sub
Function GetEditionNumber()
Dim conn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("DSN"))
Dim cmd As SqlCommand = New SqlCommand("SELECT MAX(Id) from Table", conn)
conn.Open()
Dim id As String = cmd.ExecuteScalar
conn.Close()
Return id
End Function
</script>
<html>
<head></head>
<body>
<form runat="server">
<asp:literal id="literal1" runat="server" /><br>
<asp:TextBox id="startDate"runat="server"></asp:TextBox><br>
<asp:TextBox id="endDate" runat="server"></asp:TextBox>
</form>
</body>
</html>Web.Config used in Example<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="DSN" value="server=localhost;uid=sa;pwd=;Database=pubs"/>
</appSettings>
</configuration>
……