asp.Netデータベースのクエリー方法の概要

10591 ワード

「ado.net 2.0テクノロジーの内幕
ローを返すクエリの実行
使用するクラスとメソッド: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データ取得クエリーの実行
 
//取引でのクエリーの実行
 
//非同期実行クエリー
"