ASP.NET Listコントロールのホームへ戻る

DataReaderをバインドするには

 

  CheckBoxListDataReaderをバインドするサンプル

 

CheckBoxListDataReaderをバインドするサンプル

 

ここで解説するサンプルは、DataReaderの内容をCheckBoxListにバインドします。CheckBoxListからアイテムをチェックしてOKボタンをクリックするとチェックしたアイテムが表示されます。

 

このサンプルでは、以下のノウハウを習得できます。

 

   DataReaderを生成する方法

   CheckBoxListDataReaderをバインドする方法

 

データベースのテーブルを読み込んでDataReaderを生成するには、CommandクラスのExecuteReader()メソッドを使用します。このサンプルは、OleDbConnection, OleDbCommandクラスを使用してAccess/SQL ServertblVsDotNetテーブルを読み込んでOleDbDataReaderを生成します。

 

22では、tblVsDotNetテーブルからレコードを抽出するためのSQLを作成しています。Select * From tblVsDotNetは、tblVsDotNetテーブルからすべてレコードを読み込むことを意味します。*は、レコードのすべてのカラムを読み込むことを意味します。行23では、Web.configに登録されているデータベースの接続情報を取得しています。Web.configとデータベースの接続情報については、第3章で詳しく解説します。行24では、OleDbConnectionのインスタンスを生成しています。OleDbConnectionの引数には、データベースの接続情報を指定します。たとえば、Accessのデータベースに接続するには、以下のような接続情報を指定します。

 

PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=X:\webdb\Access.mdb

 

25では、OleDbCommandのインスタンスを生成しています。OleDbCommandの引数には、SQLコマンドとOleDbConnectionを指定します。行27では、OleDbConnectionOpen()メソッドでデータベースを開いています。

 

28-33With…End Withでは、CheckBoxListの各種プロパティを設定してOleDbDataReaderをバインドしています。行29では、OleDbCommandExecuteReader()メソッドでSQLSelectステートメントを実行してOleDbDataReaderを生成してCkeckBoxListDataSourceプロパティに設定しています。ExecuteReader()メソッドの引数にCommandBehavior.CloseConnectionを指定するとOleDbDataReaderが解放されるときに自動的にデータベースが閉じられます。行30-31では、CheckBoxListDataValueFieldDataTextFieldプロパティにOleDbDataReaderの対応するカラム名を設定しています。OleDbDataReaderShortNameのカラムには、言語の省略名(VB.NET)が格納されています。LongNameのカラムには、言語のフル名称(Visual Basic .NET)が格納されています。行32では、CheckBoxListDataBind()メソッドでOleDbDataReaderをバインドしています。

 

21: Sub BindData()
 22:   Dim strSQL as String = "Select * From tblVsDotNet"
 23:   Dim strCon as String = ConfigurationSettings.AppSettings("conStringNw")
 24:   Dim con As OleDbConnection = New OleDbConnection(strCon)
 25:   Dim cmd As OleDbCommand = New OleDbCommand(strSQL, con)
 27:   con.Open()
 28:   With chklVsNet
 29:     .DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)
 30:     .DataValueField = "ShortName"
 31:     .DataTextField = "LongName"
 32:     .DataBind()
 33:   End With

 34: End Sub

 

42: <asp:CheckBoxList id="chklVsNet" runat="server" />

 

 

Note

データベースを処理するための各種クラスについて:

 

ADO.NETには、データベースを処理するための各種クラスがサポートされています。System.Data.OleDbNamespaceには、OLE DBを介してAccess, SQL Server, Oracleなどのデータベースを処理するためのクラスOleDbConnection, OleDbCommand, OleDbDataReaderなどが用意されています。

 

System.Data.SqlClientNamespaceには、SQL Server専用のクラスSqlConnection, SqlCommand, SqlDataReaderなどが用意されています。

 

この他に、OracleODBC専用のNamespaceがあります。OracleNamespaceには、OracleConnection, OracleCommand, OracleDataReaderなどのクラスが用意されています。ODBCNamespaceには、OdbcConnection, OdbcCommand, OdbcDataReaderなどのクラスが用意されています。

 

ここで解説しているサンプルは、System.Data.OleDbNamespaceをインポートしてOleDb系のクラスを使用しています。OleDb系のクラスには、クラス名の先頭に”OleDb”が付加されます。

 

ASP.NET Listコントロールのホームへ戻る