Working With Multiple Active Resultsets (MARS) - Demo
MARS allows you to work with multiple resultsets with a single database connection. It is disabled by default so you must include
MultipleActiveResultSets=True in the connection string.
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Private Sub Page_Load()
If Not Page.IsPostBack Then
BuildTree()
End If
End Sub
Sub BuildTree()
' Create MARS connection
Dim connectionString As String = "....MultipleActiveResultSets=True"
Dim con As New SqlConnection(connectionString)
' Create Movie Categories command
Dim cmdCategoriesText As String = "SELECT Id,Name FROM MovieCategories"
Dim cmdCategories As New SqlCommand(cmdCategoriesText, con)
' Create Movie command
Dim cmdMoviesText As String = "SELECT Title FROM Movies " _
& "WHERE CategoryId=@CategoryID"
Dim cmdMovies As New SqlCommand(cmdMoviesText, con)
cmdMovies.Parameters.Add("@CategoryId", SqlDbType.Int)
Using con
con.Open()
' Iterate through categories
Dim categories As SqlDataReader = cmdCategories.ExecuteReader()
While categories.Read()
' Add category node
Dim id As Integer = categories.GetInt32(0)
Dim name As String = categories.GetString(1)
Dim catNode As New TreeNode(name)
TreeView1.Nodes.Add(catNode)
' Iterate through matching movies
cmdMovies.Parameters("@CategoryId").Value = id
Dim movies As SqlDataReader = cmdMovies.ExecuteReader()
While movies.Read()
' Add movie node
Dim title As String = movies.GetString(0)
Dim movieNode As New TreeNode(title)
catNode.ChildNodes.Add(movieNode)
End While
movies.Close()
End While
End Using
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show MARS</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView
id="TreeView1"
Runat="server" />
</div>
</form>
</body>
</html>