現在オフラインです。再接続するためにインターネットの接続を待っています

ADO 2005 と Visual C# 2005、または ADO.NET と Visual C# .NET を使用して、データベースに接続してコマンドを実行する方法

この記事は、以前は次の ID で公開されていました: JP306636
Microsoft Visual Basic .NET については、次の資料を参照してください。301075
Microsoft Visual J# .NET については、次の資料を参照してください。322045

この資料では、次の Microsoft .NET Framework クラス ライブラリの名前空間を参照しています。
  • System.Data
  • System.Data.SqlClient
概要
この資料では、ADO 2005 または ADO.NET を使用してデータベースに接続し、コマンドを実行する方法について、手順を追って説明します。

必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は次のとおりです。
  • Microsoft Windows Server 2003、Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server、または Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio 2005 または Microsoft Visual Studio .NET
この資料は、次のトピックについて詳しい知識のあるユーザーを対象としています。
  • データベースの用語
  • SQL (Structured Query Language)

コマンドの実行方法

データ ストアに対して操作を行うには、データベースに対してコマンドを発行します。コマンドには、データベースに対して発行できる任意のステートメントが含まれます。データ ストアに対するコマンドを取得するために、OleDbCommand クラスまたは SqlCommand クラスを使用できます。OleDbCommand は特定のデータ ストア専用に使用することができます。この資料では、ADO.NET 内で、SqlClient クラスを使用して Microsoft SQL Server を実行するコンピュータに接続する方法、および、OleDb クラスを使用して利用可能な OLE DB ドライバまたは ODBC ドライバを持つ任意のデータベースに接続する方法について説明します。ただし、一般的にどちらでもコードは同じです。

ADO を使用する場合は、Command、Connection、または Recordset オブジェクトを使用してコマンドを発行できます。ADO.NET では、Command オブジェクト (SqlCommand または OleDbCommand) でのみコマンドを実行できます。

コマンドを実行するには、以下の手順を実行します。
  1. 以下の手順を実行して、Microsoft Visual C# 2005 または Microsoft Visual C# .NET で新しいコンソール アプリケーションを作成します。
    1. Microsoft Visual Studio 2005 または Microsoft Visual Studio .NET を起動します。
    2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
    3. [新しいプロジェクト] ダイアログ ボックスで [プロジェクトの種類] ボックスの一覧の [Visual C# プロジェクト] をクリックし、[テンプレート] ボックスの一覧の [コンソール アプリケーション] をクリックします。

      : Visual Studio 2005 では、[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] の下の [Visual C#] をクリックし、[テンプレート] の下の [コンソール アプリケーション] をクリックします。
  2. プロジェクトに System.Data 名前空間への参照が設定されていることを確認します。設定されていない場合は、参照を追加します。
  3. System 名前空間と System.Data 名前空間に using ステートメントを使用して、以後のコードでこれらの名前空間の宣言を修飾する必要がないようにします。使用するコマンドによっては、System.Data.SqlClient 名前空間または System.Data.OleDb 名前空間を含めることもできます。
    using System;using System.Data;using System.Data.SqlClient;					
  4. データベースへの接続を確立するには、接続文字列を用意する必要があります。接続文字列には、サーバー名、データベース名、ユーザー ID、パスワードなど、データベースへの接続を確立するために必要な情報がすべて含まれます。たとえば、次の接続文字列は、SQL Server を実行するローカル コンピュータを指しています。

    OleDb 接続の場合の例を以下に示します。

    : ユーザー ID <UID> には、データベースに対してこの操作を実行するのに必要な権限が付与されている必要があります。
    Provider=SQLOLEDB.1;User ID=<UID>;Initial Catalog=pubs;Data Source=(local)						
    SqlClient 接続の場合の例を以下に示します。
    User ID=<UID>;Initial Catalog=pubs;Data Source=(local)						
    : 使用しているデータベースに対する接続文字列を確認する方法の詳細を参照するには、次の Microsoft Developer Network (MSDN) ライブラリにアクセスし、「ConnectionString」を検索してください。
  5. Visual Studio により静的クラスと空の Main() プロシージャが作成されます。このプロシージャで文字列変数を宣言し、適切なデータベースの接続文字列を格納します。

    : ユーザー ID <UID> には、データベースに対してこの操作を実行するのに必要な権限が付与されている必要があります。
    class Class1{	static void Main(string[] args)	{		string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";	}}					
  6. この接続文字列を使用して、新しい OleDbConnection オブジェクトまたは SqlConnection オブジェクトを作成します。作成したオブジェクトの Open メソッドを呼び出して、データベースへの接続を確立します。
    SqlConnection objConn = new SqlConnection(sConnectionString);objConn.Open();					
  7. SqlCommand オブジェクトまたは OleDbCommand オブジェクトを作成します。このオブジェクトに、実行するコマンドと手順 6. で作成した接続オブジェクトを渡します。次のサンプル コードでは INSERT ステートメントを渡しています。
    string sSQL = "INSERT INTO Employee " +   "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " +   "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";SqlCommand objCmd = new SqlCommand(sSQL,objConn);					
  8. SqlCommand オブジェクトまたは OleDbCommand オブジェクトを作成した後、ExecuteNonQuery メソッドを呼び出して、オブジェクトが表すコマンドを実行できます。ExecuteNonQuery は結果を返さないコマンド (DELETE、UPDATE、および INSERT ステートメントなど) 用に設計されています。ステートメントが実行されて例外がスローされない場合 (次のコードを参照してください)、コマンドはデータベースに対して正常に実行されています。
    objCmd.ExecuteNonQuery();					
  9. プロジェクトを保存します。[デバッグ] メニューの [開始] をクリックして、データベースに対してコマンドを実行します。

パラメータの使用方法

データベースに対してコマンド (UPDATE、INSERT、DELETE などのステートメントまたはストアド プロシージャの呼び出し) を実行する場合、これらのコマンドにパラメータを含めることができます。コマンドをパラメータ化することにより、コマンドを 1 つだけ作成し、パラメータにさまざまな値を設定して、何度も実行することができます。上の例で使用した INSERT ステートメントに対応する DELETE ステートメントを次に示します。
string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id"				
この DELETE ステートメントのパラメータ名 ("@emp_id") は、コマンドを実行するたびに異なる値に置き換えることのできるパラメータを表します。

コマンドでパラメータを使用するには、以下の手順を実行します。
  1. コマンドの実行方法」の手順と同じように、OleDbConnection オブジェクトまたは SqlConnection オブジェクトを作成します。
  2. コマンド テキストでパラメータを使用できるように、値をプレースホルダ ("@emp_id" または "@fname" など) に置き換えます。前に記載されている DELETE ステートメントの例を参照してください。
  3. OleDbCommand オブジェクトまたは SqlCommand オブジェクトを作成します。作成したオブジェクトに、最初の手順で作成した接続オブジェクトおよびパラメータのプレースホルダを含むコマンド テキストを渡します。
  4. パラメータごとに、コマンド オブジェクトのパラメータ コレクションにパラメータ オブジェクトを追加します。パラメータごとに、名前とデータ型を指定する必要があります。
    objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);					
  5. ストアド プロシージャは、値と出力パラメータを返すパラメータを持つことができます。クエリを実行する前に、各入力パラメータにも値を設定する必要があります。
    objCmd.Parameters["@emp_id"].Value = "MSD12923F";					
  6. 次のクエリを実行します。
    try {	objCmd.ExecuteNonQuery();}catch (System.Exception e) {	Console.WriteLine(e.Message);}Console.WriteLine("Record Deleted");					

完全なコード リスト

: このコードを実行する前に、User ID =<UID> を適切な値に変更する必要があります。<UID> に、データベースに対してこの操作を実行するのに必要な権限が付与されていることを確認してください。
using System;using System.Data;using System.Data.SqlClient;    /// <summary>    /// Summary description for Class1.    /// </summary>    class Class1    {	static void Main(string[] args)	{		AddRecord();		RemoveRecord();		Pause();	}	static void Pause()	{		Console.WriteLine("Press Enter To Continue....");		Console.ReadLine();	}	static void AddRecord()	{		string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";		SqlConnection objConn = new SqlConnection(sConnectionString);		objConn.Open();		string sSQL = "INSERT INTO Employee " + 		  "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 	          "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";		SqlCommand objCmd = new SqlCommand(sSQL,objConn);		try 		{			objCmd.ExecuteNonQuery();			}		catch (System.Exception e) 		{			Console.WriteLine(e.Message);		}		Console.WriteLine("Record Added");	}	static void RemoveRecord()	{		string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";		SqlConnection objConn = new SqlConnection(sConnectionString);		objConn.Open();		string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id";		SqlCommand objCmd = new SqlCommand(sSQL,objConn);		objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);		objCmd.Parameters["@emp_id"].Value = "MSD12923F";		try 		{			objCmd.ExecuteNonQuery();		}		catch (System.Exception e) 		{			Console.WriteLine(e.Message);		}		Console.WriteLine("Record Deleted");	}} 				
関連情報
ADO.NET、データベース コマンド、およびストアド プロシージャの使用方法の詳細については、以下のマイクロソフト Web サイトを参照してください。詳細については、次の書籍を参照してください。詳細については、次のマイクロソフト Web サイトを参照してください。
コース番号 : #2391『Microsoft ADO.NET によるプログラミング』 (英語トレーニング 2389 の日本語版)
http://www.microsoft.com/japan/learning/training/training.aspx?cert=1&cate=1&id=2391
プロパティ

文書番号:306636 - 最終更新日: 10/04/2006 00:10:00 - リビジョン: 4.1

Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# 2005

  • kbhowtomaster kbsqlclient kbsystemdata KB306636
フィードバック
t=">Element('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">