データベースレコードの取得¶
``SELECT``ステートメントを使用して、``SELECT``コマンドを介してデータベースからレコードを取得できます。``SELECT``ステートメントを実行するには、以下を行う必要があります:
データベース接続を作成して開きます。
``SELECT``ステートメントを表す``EDBCommand``オブジェクトを作成します。
``EDBData``を返す``EDBCommand``オブジェクトの``ExecuteReader()``メソッドでコマンドを実行します
結果を表示するか、``EDBDataReader``を何らかのコントロールにバインドする``EDBDataReader``をループします。
``EDBDataReader``オブジェクトは、一度に1レコードずつ提示されるデータベースレコードの順方向専用および読み取り専用ストリームを表します。ストリーム内の後続のレコードを表示するには、``EDBDataReader``オブジェクトの``Read()``メソッドを呼び出す必要があります。
次の例:
Advanced Server名前空間``EnterpriseDB.EDBClient``をインポートします
``SELECT``ステートメントで``EDBCommand``オブジェクトを初期化します。
データベースへの接続を開きます。
``EDBCommand``オブジェクトの``ExecuteReader``メソッドを呼び出すことで``EDBCommand``を実行します。
SQLステートメントの結果は``EDBDataReader``オブジェクトに取得されます。
``EDBDataReader``オブジェクトの内容をループして、クエリによって返されたレコードを``WHILE``ループ内に表示します。
``Read()``メソッドは次のレコードに進み(レコードが存在する場合)、レコードが存在する場合は``true``を返し、``EDBDataReader``がに到達したことを示す場合は``false``を返します結果セットの終わり。
<% @ Page Language="C#" %>
<% @Import Namespace="EnterpriseDB.EDBClient" %>
<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Configuration" %>
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
string strConnectionString = ConfigurationSettings.AppSettings
["DB_CONN_STRING"];
EDBConnection conn = new EDBConnection(strConnectionString);
try
{
conn.Open();
EDBCommand cmdSelect = new EDBCommand("SELECT * FROM dept",conn);
cmdSelect.CommandType = CommandType.Text;
EDBDataReader drDept = cmdSelect.ExecuteReader();
while(drDept.Read())
{
Response.Write("Department Number: " + drDept["deptno"]);
Response.Write("\tDepartment Name: " + drDept["dname"]);
Response.Write("\tDepartment Location: " + drDept["loc"]);
Response.Write("<br>");
}
}
catch(Exception exp)
{
Response.Write(exp.ToString());
}
finally
{
conn.Close();
}
}
</script>
サンプルコードを実行するには、デフォルトのWebルートディレクトリの次の名前のファイルにコードを保存します。
selectEmployees.aspx
プログラムを呼び出すには、Webブラウザーを開き、次を参照します。
http:// localhost / selectEmployees.aspx
単一のデータベースレコードの取得¶
クエリから単一の結果を取得するには、``EDBCommand``オブジェクトの``ExecuteScalar()``メソッドを使用します。``ExecuteScalar()``メソッドは、指定されたクエリによって生成された``DataSet``の最初の行の最初の列の最初の値を返します。
<% @ Page Language="C#" %>
<% @Import Namespace="EnterpriseDB.EDBClient" %>
<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Configuration" %>
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
string strConnectionString = ConfigurationSettings.AppSettings
["DB_CONN_STRING"];
EDBConnection conn = new EDBConnection(strConnectionString);
try
{
conn.Open();
EDBCommand cmd = new EDBCommand("SELECT MAX(sal) FROM emp",conn);
cmd.CommandType = CommandType.Text;
int maxSal = Convert.ToInt32(cmd.ExecuteScalar());
Response.Write("Emp Number: " + maxSal);
}
catch(Exception exp)
{
Response.Write(exp.ToString());
}
finally
{
conn.Close();
}
}
</script>
次の名前のWebルートディレクトリ内のファイルにサンプルコードを保存します。
selectscalar.aspx
サンプルコードを呼び出すには、Webブラウザーを開き、次を参照します。
http:// localhost / selectScalar.aspx
サンプルには``ExecuteScalar()``メソッドによって返される値の明示的な変換が含まれていることに注意してください。``ExecuteScalar()``メソッドはオブジェクトを返します。オブジェクトを表示するには、``Convert.ToInt32``メソッドを使用してオブジェクトを整数値に変換する必要があります。