DataReaderをバインドするには
● CheckBoxListにDataReaderをバインドするサンプル

図 CheckBoxListにDataReaderをバインドするサンプル
ここで解説するサンプルは、DataReaderの内容をCheckBoxListにバインドします。CheckBoxListからアイテムをチェックしてOKボタンをクリックするとチェックしたアイテムが表示されます。
このサンプルでは、以下のノウハウを習得できます。
▲ DataReaderを生成する方法
▲ CheckBoxListにDataReaderをバインドする方法
データベースのテーブルを読み込んでDataReaderを生成するには、CommandクラスのExecuteReader()メソッドを使用します。このサンプルは、OleDbConnection, OleDbCommandクラスを使用してAccess/SQL ServerのtblVsDotNetテーブルを読み込んで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では、OleDbConnectionのOpen()メソッドでデータベースを開いています。
行28-33のWith…End Withでは、CheckBoxListの各種プロパティを設定してOleDbDataReaderをバインドしています。行29では、OleDbCommandのExecuteReader()メソッドでSQLのSelectステートメントを実行してOleDbDataReaderを生成してCkeckBoxListのDataSourceプロパティに設定しています。ExecuteReader()メソッドの引数にCommandBehavior.CloseConnectionを指定するとOleDbDataReaderが解放されるときに自動的にデータベースが閉じられます。行30-31では、CheckBoxListのDataValueFieldとDataTextFieldプロパティにOleDbDataReaderの対応するカラム名を設定しています。OleDbDataReaderのShortNameのカラムには、言語の省略名(VB.NET)が格納されています。LongNameのカラムには、言語のフル名称(Visual Basic .NET)が格納されています。行32では、CheckBoxListのDataBind()メソッドで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.OleDbのNamespaceには、OLE DBを介してAccess, SQL Server, Oracleなどのデータベースを処理するためのクラスOleDbConnection, OleDbCommand, OleDbDataReaderなどが用意されています。 System.Data.SqlClientのNamespaceには、SQL Server専用のクラスSqlConnection, SqlCommand, SqlDataReaderなどが用意されています。 この他に、OracleやODBC専用のNamespaceがあります。OracleのNamespaceには、OracleConnection, OracleCommand, OracleDataReaderなどのクラスが用意されています。ODBCのNamespaceには、OdbcConnection, OdbcCommand, OdbcDataReaderなどのクラスが用意されています。 ここで解説しているサンプルは、System.Data.OleDbのNamespaceをインポートしてOleDb系のクラスを使用しています。OleDb系のクラスには、クラス名の先頭に”OleDb”が付加されます。 |