티스토리 뷰

라이브러리

- 재사용성, 유지보수, 코드관리가 쉬워진다.

 

솔루션 내 클래스라이브러리 추가(.net framework)

빌드 후 프로젝트 참조 추가를 해주어야 사용 가능함.

 

기존 프로젝트에서 만들었던 메소드들의 재사용성을 높이기 위해

라이브러리화하기

 

** 클래스 라이브러리

public class Class1
{
    private SqlConnection sqlConn = null;
    private string connectionString = "";

    public void setConnectionString(string str)
    {
        connectionString = str;
    }
        
    public DataSet requestExecuteNonQuery(string query)
    {
        DataSet ds = new DataSet();
		
        //select문
        if(query.Trim(' ').Substring(0,3).Equals("SEL"))
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                SqlDataAdapter adpt = new SqlDataAdapter(query, conn);
                adpt.Fill(ds); 
            }
            return ds;
        }
        else//update, delete문
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();

                SqlCommand command = new SqlCommand();
                command.Connection = conn;
                command.CommandText = query;
                command.ExecuteNonQuery();
            }
            return null;
        }
    }

}

 

 

** 기존 프로젝트

//윈폼 로드할 때 SqlConnection 실행
private void Form1_Load(object sender, EventArgs e)
{
    class1.setConnectionString("SERVER=" + ConfigurationManager.AppSettings["IP"] + "," + ConfigurationManager.AppSettings["PORT"] + ";" +
    "DATABASE=" + ConfigurationManager.AppSettings["DBNAME"] + ";" +
    "UID=" + ConfigurationManager.AppSettings["USERID"] + ";" +
    "PASSWORD=" + ConfigurationManager.AppSettings["USERPASSWORD"]);
}

//Delete문
private void button1_Click(object sender, EventArgs e)
{
    string bookNo = textBox1.Text;

    class1.requestExecuteNonQuery("DELETE FROM BOOKS WHERE BOOKNO = " + bookNo);

    button4_Click(null, null);
}

//Update문
private void button2_Click(object sender, EventArgs e)
{
    string bookNo = textBox4.Text;
    string bookName = textBox3.Text;

    class1.requestExecuteNonQuery("UPDATE BOOKS SET NAME = '" + bookName + "' WHERE BOOKNO = " + bookNo);

    button4_Click(null, null);
}

//Select문
private void button4_Click(object sender, EventArgs e)
{

    DataSet ds = new DataSet();
    
    ds = class1.requestExecuteNonQuery("SELECT * FROM BOOKS(NOLOCK)");

    dataGridView1.DataSource = ds.Tables[0];
}

라이브러리를 사용하여 코드가 한결 간결해졌다.

 


프로시저도 Dictionary를 사용하여 라이브러리 함수로 만들 수 있다.

Dictionary : 키와 값 한쌍으로 데이터를 저장한다.

 

** 클래스 라이브러리

 /// <summary>
 /// 프로시저를 호출하는 데 사용되는 공통함수
 /// </summary>
 /// <param name="procedureName"></param>
 /// <param name="dc"></param>
 public void requestProcedure(string procedureName, Dictionary<string,string> dc)
 {
     using (SqlConnection conn = new SqlConnection(connectionString))
     {
         conn.Open();

         SqlCommand command = new SqlCommand(procedureName, conn);
         command.CommandType = CommandType.StoredProcedure;

         //고정적이지 않게 Dictionary 생성
         foreach(var e in dc)
         {
             SqlParameter p1 = new SqlParameter(e.Key, SqlDbType.VarChar);
             p1.Direction = ParameterDirection.Input;
             p1.Value = e.Value;
             command.Parameters.Add(p1);
         }

         command.ExecuteNonQuery();
     }
 }

 

 

** 기존 프로젝트

 private void button3_Click(object sender, EventArgs e)
 {
     string bookNo = textBox6.Text;
     string bookName = textBox5.Text;
     string bookCode = textBox7.Text;

     Dictionary<string, string> dc = new Dictionary<string, string>();
     dc.Add("@BOOKNO", bookNo);
     dc.Add("@BOOKNAME", bookName);
     dc.Add("@BOOKCODE", bookCode);

	//프로시저 실행
     class1.requestProcedure("InsertBOOKS", dc);
 }

 

 


클래스 라이브러리를 참조하면 어떤 프로젝트에서든지 사용 가능하다.

'2023~ > c#(.net framework)' 카테고리의 다른 글

WebApiConfig  (0) 2024.02.06
C# 윈폼_응용프로그램 개발 14  (0) 2024.01.28
C# 윈폼_응용프로그램 개발 12  (0) 2024.01.28
C# 윈폼_응용프로그램 개발 11  (0) 2024.01.27
C# 윈폼_응용프로그램 개발 10  (0) 2024.01.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함