SQL Azure 데이터 이용(1)

Cloud 2011. 5. 17. 08:30 Posted by 알 수 없는 사용자

SQL Azure 데이터 이용(1)

SQL Azure 에 데이터를 이전했고 로컬 응용프로그램에서 데이터를 이용하는 내용을 알아보도록 하겠습니다.

VS 2010을 이용해서 Windows Forms 응용 프로그램을 생성합니다. 이를 통해 클라우드에 있는 SQL Azure 데이터를 로컬 응용 프로그램에서 나타내보도록 하겠습니다.

시작하기 전에 결론은 C#을 이용해 ADO.NET으로 똑같이 액세스할 수 있다는 것입니다. 연결 문자열만 달라지며 Azure 방화벽 외에는 동일하다는 것입니다.

Windows Forms 응용 프로그램을 생성합니다.


간단한 Form 디자인을 아래와 같이 합니다. ComboBox DataGridView 를 통해 데이터를 나타내보도록 하겠습니다.

데이터베이스 액세스를 위해 Enterprise Library 5.0을 이용할 것이며 참조 추가를 통해 관련 어셈블리를 추가합니다.
(Microsoft.Practices.EnterpriseLibrary.Common, Microsoft.Practices.EnterpriseLibrary.Data)

데이터 액세스를 위한 연결 문자열은 App.config에 아래와 같이 구성합니다.

<connectionStrings>

<add name="sqlazure1" connectionString="Data Source=SQLAzure서버이름;User ID=사용자계정;Password=비밀번호;Initial Catalog=AdventureWorksLTAZ2008R2" providerName="System.Data.SqlClient"/>

</connectionStrings>

데이터액세스를 위한 클래스를 추가합니다. 클래스 이름은 clsProduct으로 지정합니다.

ProductSubCategory 리스트와 SubCategory Product 리스트를 반환하는 메서드를 아래와 같이 정의합니다.

public DataSet GetProducts(string ProductCategoryID)

{

DataSet ds = new DataSet();

Database db = DatabaseFactory.CreateDatabase("sqlazure1");

string spName = "[SalesLT].[usp_GetProductByCategoryID]";

DbCommand cmd = db.GetStoredProcCommand(spName);

db.AddInParameter(cmd, "ProductCategoryID", DbType.Int32, ProductCategoryID);

ds = db.ExecuteDataSet(cmd);

return ds;

}

Form1.cs로 이동하여 아래와 같이 필드를 선언하고 InitializeComponent 아래에 코드를 작성합니다. ComboBox SQL Azure의 데이터를 나타내는 내용입니다.

public partial class Form1 : Form

{

clsProduct product = new clsProduct();

public Form1()

{

InitializeComponent();

cbSubCategory.DataSource = product.GetProductSubCategory().Tables[0];

cbSubCategory.DisplayMember = "Name";

cbSubCategory.ValueMember = "ProductCategoryID";

GetProducts();

}

또한 ComboBox SelectedIndexChanged 이벤트를 발생시켜 아래와 같이 코드를 작성합니다.

private void cbSubCategory_SelectedIndexChanged(object sender, EventArgs e)

{

GetProducts();

}

GetProducts 메서드는 Products 리스트를 얻어 오는 내용이며 아래와 같이 코드를 작성합니다.

private void GetProducts()

{

dataGridView1.DataSource = product.GetProducts(cbSubCategory.SelectedValue.ToString()).Tables[0];

}

프로젝트를 실행해서 결과를 확인합니다.

이상에서 보았듯이 로컬의 응용프로그램에서 SQL Azure를 액세스하는 것은 별다른 내용 없이 로컬에 있는 SQL 데이터를 액세스하는 것과 동일합니다.