본문 바로가기
프로그래밍/C#

C# 에서 MSSQL 연결하기 - 가칭 : DBController

by zoo10 2011. 1. 3.

새로운 언어로 프로그램을 시작할 때 저는 Hello World 찍은 후, DB연결이 되면

아~ 다 됬네.

라는 느낌이 듭니다. 저만 그런건지는 모르겠지만 DB연결해서 데이터 SELECT가 성공적으로 되었다면 만들고자 하는 프로그램의 끝이 보이죠.

말 그대로 '시작이 반'인 느낌이 됩니다. 저만 그런가요?

이번에는 C#으로 간단하게 DB연결을 해보았습니다. 따로 설명드릴 내용은 없습니다만.. 사실 말씀드릴 내용도 없습니다. ^^

왼쪽 그림을 보시면 DB연결 버튼과 데이터요청 버튼이 있습니다.

DB연결 버튼을 누르면 Open 이란 값이 나오고, 데이터요청 버튼을 누르면 리치텍스트박스에 어떤 정보가 나옵니다.

 

요렇게 해서 DB 연결 테스트는 끄읏~. 아래는 UI 에 대한 간략한 표와 소스 코드가 되겠습니다. 이건 뭐 따로 프로그램을 드릴필요는 없겠네요. 그냥 타이핑을 치셔도 5분정도면 ^^;;

 

웹 폼 데이터시트
컨트롤타입 컨트롤 Name 컨트롤 Text 기타
Button button1 DB 연결 Nanum Gothic, 12pt, height:25
Button button2 데이터 요청 Nanum Gothic, 12pt, height:25
Label lblConnection 연결되지 않았습니다. Nanum Gothic, 12pt
RichTextBox rtbList 없음 기본

 

가장 간단하게 테스트 해보려고 뚝딱 만들었습니다. 아~ 난 맘에 안들어 하시는 분들은 다르게 만드셔도 상관없을 듯합니다. 아래는 코딩입니다. 코딩은 여러가지 방법이 있는것 같더군요. 저는 아주 초보라서 초보적으로 짰습니다. ^^;;

//업데이트 합니다.(jsm님 감사합니다.)
Form1.Designer.cs 파일에 아래 connection 변수를 정의했습니다. 참고하시기 바랍니다.
static private SqlConnection connection;

Form1.cs (폼명이 Form1 일때만 이 파일명입니다. 폼의 이름을 다르게 주셨으면 폼명.cs 파일이 될겁니다. 괜한 노파심이 ^^;;)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace testOledb
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            connectDb();
        }

        private void connectDb()
        {
            string connectionString = getConnectionString();

            using (connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    lblConnection.Text = connection.State.ToString();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }

        static private string getConnectionString()
        {
            return "Data Source=SQL서버주소;Initial Catalog=pubs;USER ID=아이디;PASSWORD=비밀번호";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string connectString = getConnectionString();

            using (connection = new SqlConnection(connectString))
            {
                try
                {
                    connection.Open();
                    string queryString = "select * from titleauthor";
                    SqlCommand command = new SqlCommand(queryString, connection);
                    SqlDataAdapter adapter = new SqlDataAdapter(command);
                    DataSet dataSet = new DataSet();
                    adapter.Fill(dataSet);
                    if (dataSet.Tables.Count > 0)
                    {
                        foreach (DataRow row in dataSet.Tables[0].Rows)
                        {
                            rtbList.AppendText(row["au_id"].ToString());
                            rtbList.AppendText("\t");
                            rtbList.AppendText(row["title_id"].ToString());
                            rtbList.AppendText("\t");
                            rtbList.AppendText(row["au_ord"].ToString());
                            rtbList.AppendText("\t");
                            rtbList.AppendText(row["royaltyper"].ToString());
                            rtbList.AppendText("\n");
                        }
                    }
                }
                catch (Exception er)
                {
                    MessageBox.Show(er.Message);
                }
                finally 
                {
                    connection.Close();
                }
            }
        }
    }
}

일단은 pubs 데이터베이스로 하려합니다. 그리 어렵지 않으니 차근히 살펴보시기 바랍니다. 아래 링크는 MSDN에서 참조한 링크입니다.

System.Data.SqlClient 네임스페이스 관련 MSDN 주소
System.Data.SqlClient : http://msdn.microsoft.com/ko-kr/library/8t72t3k4.aspx
SqlCommand 클래스 : http://msdn.microsoft.com/ko-kr/library/system.data.sqlclient.sqlcommand.aspx
SqlConnection 클래스 : http://msdn.microsoft.com/ko-kr/library/system.data.sqlclient.sqlconnection.aspx
SqlDataAdapter 클래스 : http://msdn.microsoft.com/ko-kr/library/system.data.sqlclient.sqldataadapter.aspx

그럼 즐프하세요~~