asp.Netデータベースのクエリー方法の概要
10591 ワード
「ado.net 2.0テクノロジーの内幕
ローを返すクエリの実行
使用するクラスとメソッド:SqlConnection,SqlCommand,ExecuteReader,SqlDataReader
ExecuteReaderメソッドは、結果の1行のデータを表示し、一方向であるSqlDataReaderオブジェクトを返します.
例:
単一値の取得
使用するクラスとメソッド:SqlConnection,SqlCommand,ExecuteScale
ExecuteScaleメソッドは、SqlDataReaderを返すのではなく、一般的なObjectデータ型の最初の行の最初の列の値を返します.単一の値を返す場合は、この構文の甘い頭を使用します.SqlDataReaderも作成し、所望の値を取得しますが、すべてのコードを記述する必要はありません.
例:
decimalはSQL Serverの浮動小数点数タイプフォーマットで、":c"はシステムの通貨フォーマットを使用して出力をフォーマットします
結果セットを返さないクエリーの実行(データ更新の変更)
使用するクラスとメソッド:SqlConnection,SqlCommand,ExecuteNonQuery
これらのクエリは、SqlCommandのExecuteReaderメソッドを呼び出すことによって実行できます.しかし、これらのクエリはローを返さないため、不要なオーバーヘッドのようです.幸いなことに、SqlCommandクラスは、SqlDataReaderオブジェクトを返さずにクエリを実行するExecuteNonQueryメソッドを開示しています.
例:
UPDATE、INSERT、DELETE文では、コマンドが影響するローの数を返します.他のすべてのタイプの文について、戻り値は-1です.ロールバックが発生した場合、戻り値も-1になります.
//一括操作照会の実行
//XMLデータ取得クエリーの実行
//取引でのクエリーの実行
//非同期実行クエリー
"
ローを返すクエリの実行
使用するクラスとメソッド:SqlConnection,SqlCommand,ExecuteReader,SqlDataReader
ExecuteReaderメソッドは、結果の1行のデータを表示し、一方向であるSqlDataReaderオブジェクトを返します.
例:
string
strConn, strSQL;
strConn
=
@"
Data Source=.\SQLExpress;
"
+
"
Initial Catalog=Northwind;Trusted_Connection=Yes;
"
;
strSQL
=
"
SELECT OrderID, CustomerID, OrderDate
"
+
"
FROM Orders WHERE Shipcountry = 'Canada'
"
;
SqlConnection cn
=
new
SqlConnection(strConn);
cn.Open();
SqlCommand cmd
=
new
SqlCommand(strSQL, cn);
SqlDataReader rdr
=
cmd.ExecuteReader();
while
(rdr.Read())
Console.WriteLine(
"
{0} {1} {2:d}
"
, rdr[
"
OrderID
"
], rdr
"
CustomerID
"
], rdr[
"
OrderDate
"
]);
rdr.Clode();
単一値の取得
使用するクラスとメソッド:SqlConnection,SqlCommand,ExecuteScale
ExecuteScaleメソッドは、SqlDataReaderを返すのではなく、一般的なObjectデータ型の最初の行の最初の列の値を返します.単一の値を返す場合は、この構文の甘い頭を使用します.SqlDataReaderも作成し、所望の値を取得しますが、すべてのコードを記述する必要はありません.
例:
string
strConn, strSQL;
strConn
=
@"
Data Source=.\SQLExpress;
"
+
"
Initial Catalog = Northwing;Trusted_Connection=Yes;
"
;
strSQL
=
"
SELECT SUM(UnitPrice * Quantity)
"
+
"
FROM Orders INNER JOIN [Order Details]
"
+
"
ON Orders.OrderID = [Order Details].OrderID
"
+
"
WHERE CustomerID -'ALFKI'
"
;
sqlConnertion cn
=
new
SqlConnection(strConn);
cn.Open();
SqlCommand cmd
=
new
SqlCommand(strSQL, cn);
decimal
decOrderTotal
=
(
decimal
)cmd.ExecuteScalar();
Console.WriteLine(
"
Order Total: {0:c}
"
, decOrderTotal);
decimalはSQL Serverの浮動小数点数タイプフォーマットで、":c"はシステムの通貨フォーマットを使用して出力をフォーマットします
結果セットを返さないクエリーの実行(データ更新の変更)
使用するクラスとメソッド:SqlConnection,SqlCommand,ExecuteNonQuery
これらのクエリは、SqlCommandのExecuteReaderメソッドを呼び出すことによって実行できます.しかし、これらのクエリはローを返さないため、不要なオーバーヘッドのようです.幸いなことに、SqlCommandクラスは、SqlDataReaderオブジェクトを返さずにクエリを実行するExecuteNonQueryメソッドを開示しています.
例:
string
strConn, strSQL;
strConn
=
@"
Data Source=.\SQLExpress;
"
+
"
Initial Catalog=Northwind;Trusted_Connection=Yes;
"
;
strSQL
=
"
UPDATE Customers SET CompanyName = 'NewValue'
"
+
"
WHERE CustomerID = 'ALFKI'
"
;
SqlConnection cn
=
new
SqlConnection(strConn);
cn.Open();
SqlCommand cmd
=
new
SqlCommand(strSQL, cn);
if
(cmd.ExecuteNonQuery())
Console.WriteLine (
"
Update succeede
"
);
else
Console.WriteLine(
"
Update failed
"
);
UPDATE、INSERT、DELETE文では、コマンドが影響するローの数を返します.他のすべてのタイプの文について、戻り値は-1です.ロールバックが発生した場合、戻り値も-1になります.
//一括操作照会の実行
//XMLデータ取得クエリーの実行
//取引でのクエリーの実行
//非同期実行クエリー
"