모든 테이블에 대한 처리기 클래스가 있으며 아래의 함수에서 모든 DB 작업을 수행하고 있습니다. 당신은 내가 SqlConnection
일상의 모든 시간을 사용하고 볼 수한 곳에서 SQL 라이브러리를 포함 할 데이터베이스 액세스 레이어를 디자인하는 방법
public class MyObjectHandler
{
public bool Insert(MyObject obj)
{
using(SqlConnection conn = new SqlConnection(DbHandler.ConnectionString))
{
SqlCommand comm = new SqlCommand("OBJ_INSERT", conn);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add(new SqlParameter("@Code", SqlDbType.NVarChar, 50) { Value = obj.Code });
comm.Parameters.Add(new SqlParameter("@Desc", SqlDbType.NVarChar, 150) { Value = obj.Desc });
comm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.Int) { Value = obj.UserCreated.Id });
conn.Open();
int retVal = comm.ExecuteNonQuery();
conn.Close();
if(retVal > 0)
return true;
else
return false;
}
}
public bool Update(MyObject obj)
{
using(SqlConnection conn = new SqlConnection(DbHandler.ConnectionString))
{
SqlCommand comm = new SqlCommand("OBJ_UPDATE", conn);
comm.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int) { Value = obj.Id });
comm.Parameters.Add(new SqlParameter("@Code", SqlDbType.NVarChar, 50) { Value = obj.Code });
comm.Parameters.Add(new SqlParameter("@Desc", SqlDbType.NVarChar, 150) { Value = obj.Desc });
comm.CommandType = CommandType.StoredProcedure;
conn.Open();
int retVal = comm.ExecuteNonQuery();
conn.Close();
if(retVal > 0)
return true;
else
return false;
}
}
public bool Delete(int Id)
{
using(SqlConnection conn = new SqlConnection(DbHandler.ConnectionString))
{
SqlCommand comm = new SqlCommand("OBJ_DELETE", conn);
comm.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int) { Value = Id });
comm.CommandType = CommandType.StoredProcedure;
conn.Open();
int retVal = comm.ExecuteNonQuery();
conn.Close();
if(retVal > 0)
return true;
else
return false;
}
}
}
문제이다. 모든 SQL 라이브러리를 포함하는 클래스 인 계층을 만들고 싶습니다. 이 문제에 대한 일반적인 해결책을 제공해 주시겠습니까? 이것에 대해서도 일반적인 생각조차도 충분할 것입니다. 이 정도면 충분
public static DataTable GetDataTable(string spName)
{
DataTable resultsTable = new DataTable();
using(SqlConnection conn = new SqlConnection(DbHandler.ConnectionString))
{
SqlCommand comm = new SqlCommand(spName, conn);
comm.CommandType = CommandType.StoredProcedure;
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter(comm);
adapter.Fill(resultsTable);
conn.Close();
}
return resultsTable;
}
,하지만 난 더 나은 솔루션을 쉽게 매개 변수를 보내고 더 유연하게해야합니다 예를 들어
은 데이터를 얻기위한 나의 기능은 간단합니다. 유일한 옵션은 매개 변수 이름, 유형 및 길이를 하나씩 보내는 것입니다. 이것에 대한 디자인을 권하고 싶습니까?