HOWTO: ADO.NET과 Visual C# .NET을 사용하여 데이터베이스 연결 및 명령 실행

기술 자료 번역 기술 자료 번역
기술 자료: 306636 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR306636
모두 확대 | 모두 축소

이 페이지에서

요약

본 문서는 ADO(ActiveX Data Objects) .NET을 사용하여 데이터베이스에 연결하고 명령을 실행하는 방법을 설명합니다.

요구 사항

다음은 권장 하드웨어, 소프트웨어, 네트워크 인프라 및 서비스 팩입니다.

  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server 또는 Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
이 문서에서는 사용자가 다음 내용을 잘 알고 있는 것으로 가정합니다.

  • 데이터베이스 기술
  • 구조적 쿼리 언어(SQL)

명령을 실행하는 방법

데이터베이스에 대하여 명령이 실행되고 데이터 저장소를 대상으로 동작이 수행됩니다. 명령에는 데이터베이스에 대해 실행할 수 있는 모든 문이 포함됩니다. OleDbCommand 또는 SqlCommand 클래스를 사용하여 백엔드 데이터 저장소에 대한 명령을 가져올 수 있으며, OleDbCommand 클래스는 모든 데이터베이스에 대해 동일합니다. 본 문서에서는 ADO.NET 내에서 SqlClient 클래스(SQL Server 연결용)와 OleDb 클래스(사용 가능한 OLE DB 또는 ODBC 드라이버가 있는 데이터베이스용)를 모두 보여줍니다. 그러나 일반적으로 코드는 두 클래스 모두에서 동일합니다.

ADO를 사용하면 Command, Connection 또는 Recordset 개체를 통해 명령을 실행할 수 있습니다. ADO.NET에서는 Command 개체에서(SqlCommand 또는 OleDbCommand)만 명령을 실행할 수 있습다.

명령을 실행하려면 다음과 같이 하십시오.
  1. Visual Studio .NET을 엽니다.
  2. C#에서 새 콘솔 응용 프로그램을 만듭니다.
  3. System.Data 네임 스페이스에 대한 참조가 프로젝트에 포함되어 있는지 확인하고 포함되어 있지 않으면 해당 참조를 추가합니다.
  4. SystemSystem.Data 네임 스페이스에 using 문을 사용합니다. 그러면 나중에 코드에서 이 네임 스페이스 내의 선언을 한정하지 않아도 됩니다. 또한 사용하는 데이터베이스에 따라 System.Data.SqlClient를 포함시키거나 System.Data.OleDb를 포함시킬 수 있습니다.
    using System;
    using System.Data;
    using System.Data.SqlClient;
  5. 데이터베이스에 연결하려면 먼저 연결 문자열이 필요합니다. 연결 문자열에는 서버 이름, 데이터베이스 이름, 사용자 ID, 암호 등을 비롯하여 데이터베이스 연결을 설정하는 데 필요한 모든 정보가 포함됩니다. 예를 들어, 다음 연결 문자열은 'sa' 계정에 대해 빈 암호를 갖는 로컬 SQL Server를 가리킵니다.

    OleDb 연결의 경우
    Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=pubs;Data Source=(local)
    SqlClient 연결의 경우
    User ID=sa;Initial Catalog=pubs;Data Source=(local)
    참고 : 데이터베이스의 연결 문자열을 결정할 때 자세한 정보가 필요하면 다음의 MSDN Library에서 "ConnectionString"을 검색하십시오.
    http://search.microsoft.com/us/dev/default.asp
  6. Visual Studio는 정적 클래스와 빈 Main() 프로시저를 만듭니다. 다음과 같이 문자열 변수를 선언하고 이 프로시저에서 데이터베이스에 적합한 연결 문자열을 저장합니다.
    class Class1
    {
    	static void Main(string[] args)
    	{
    		string sConnectionString = 
    "User ID=sa;Initial Catalog=pubs;Data Source=(local)";
    	}
    }
  7. 다음과 같이 이 연결 문자열을 사용하여 새로운 OleDbConnection 또는 SqlConnection 개체를 만들고 Open 메서드를 호출하여 데이터베이스에 연결합니다.
    SqlConnection objConn = new SqlConnection(sConnectionString);
    objConn.Open();
  8. SqlCommand 또는 OleDbCommand 개체를 만들고 실행할 명령과 이전 단계에서 만든 연결 개체를 제공합니다. 다음 코드 예제에서는 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);
  9. SqlCommand 또는 OleDbCommand 개체를 만든 후에는 ExecuteNonQuery 메서드를 호출하여 해당 개체가 나타내는 명령을 실행할 수 있습니다. ExecuteNonQuery는 DELETE 문, UPDATE 문, INSERT 문 등과 같이 결과를 반환하지 않는 명령에 사용됩니다. 아무런 예외 없이 명령문이 실행되면 명령이 데이터베이스에 대해 성공적으로 실행된 것입니다.
    objCmd.ExecuteNonQuery();
  10. 프로젝트를 저장합니다. 디버그 메뉴에서 시작을 누른 다음 데이터베이스에 대해 명령을 실행합니다.

매개 변수를 사용하는 방법

UPDATE 문, INSERT 문, DELETE 문 또는 저장 프로시저 호출 등의 명령을 데이터베이스에 대해 실행할 때 간혹 명령을 매개 변수화하는 경우가 있습니다. 이렇게 하면 명령을 한 번만 만든 다음 다른 매개 변수 값을 사용하여 동일 명령에 대하여 여러 가지 다른 매개 변수를 취하도록할 수 있습니다. 다음과 같이 위에서 사용한 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 개체를 만들고, 1단계에서 만든 연결 개체와 매개 변수 자리 표시자가 포함된 명령 텍스트를 전달합니다.
  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");

전체 코드 예제

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=sa;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=sa;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, 데이터베이스 명령 및 저장 프로시저의 사용에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
SQL Server 2000 저장 프로시저
http://msdn.microsoft.com/library/psdk/sql/cm_8_des_07_31vb.htm

"Diving into Data Access," MSDN Voices 칼럼
http://msdn.microsoft.com/voices/data.asp

ADO 프로그래머를 위한 ADO.NET 정보
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

MSDN 온라인 .NET 개발자 센터
http://msdn.microsoft.com/net

속성

기술 자료: 306636 - 마지막 검토: 2007년 3월 19일 월요일 - 수정: 1.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# .NET 2002 Standard Edition
키워드:?
kbhowto kbhowtomaster kbnokeyword KB306636

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com