티스토리 뷰
라이브러리
- 재사용성, 유지보수, 코드관리가 쉬워진다.
솔루션 내 클래스라이브러리 추가(.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 |