[ASP.NET 개발] ASP.SQLServer에 대한 NET의 일반 데이터베이스 액세스 클래스 분류:...
이전에 나는 데이터베이스를 조작할 때 모두 같은 페이지에서 데이터베이스를 조작했다.이렇게 하면 조작이 번거롭고 데이터베이스에 대한 조작 코드를 반복해서 써야 하기 때문에 많은 시간을 낭비할 뿐만 아니라 코드도 매우 어지러워 보인다.삼층 구조를 접한 사상에서 분층의 장점과 대상을 향한 장점을 깨달았다.오늘 책을 읽을 때 주금교 선생님의 데이터베이스에 대한 통용 클래스를 보고 코드를 또렷하고 실용적으로 모방하여 데이터베이스에 대한 모든 상용 조작을 포함했습니다.
///
///
///
public class SqlHelper
{
private string connectionString;
///
///
///
public string ConnectionString
{
set { connectionString = value; }
}
///
///
///
///
public SqlHelper(string connectionString)
{
this.connectionString = connectionString;
}
///
/// ,
///
/// sql
/// , sql
///
public DataTable ExecuteDataTable(string sql,CommandType commandType)
{
return ExecuteDataTable(sql, commandType, null);
}
///
/// ,
///
/// sql
///
public DataTable ExecuteDataTable(string sql)
{
return ExecuteDataTable(sql, CommandType.Text, null);
}
///
/// ,
///
/// sql
/// , sql
/// Transact-SQL
///
public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
{
DataTable data = new DataTable(); // datatable,
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
cmd.CommandType = commandtype;// command commandType Commandtype
// ,
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
// sql sqlcommand sqldataadapter
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(data);// datatable
}
}
return data;
}
///
/// SqlDataReader
///
/// SQl
///
public SqlDataReader ExecuteReader(string sql)
{
return ExecuteReader(sql, CommandType.Text, null);
}
///
///
///
/// sql
/// , SQl
///
public SqlDataReader ExecuteReader(string sql,CommandType commandType)
{
return ExecuteReader(sql, commandType, null);
}
///
/// sqldatareader
///
///
///
///
///
public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql, con);
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameters);
}
}
con.Open();
//CommandBehavior.CloseConnection reader Connection
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
///
/// , 。 ,
///
/// SQl
///
public Object ExecuteScalar(string sql)
{
return ExecuteScalar(sql, CommandType.Text, null);
}
///
///
///
///
///
///
public Object ExecuteScalar(string sql, CommandType commandType)
{
return ExecuteScalar(sql, commandType, null);
}
///
///
///
///
///
///
///
public Object ExecuteScalar(string sql,CommandType commandType, SqlParameter[] parameters)
{
Object result=null;
SqlConnection con=new SqlConnection(connectionString);
SqlCommand cmd=new SqlCommand(sql,con);
cmd.CommandType= commandType;
if(parameters!=null)
{
foreach (SqlParameter parapmeter in parameters)
{
cmd.Parameters.Add(parapmeter);
}
}
con.Open();
result=cmd.ExecuteScalar();
con.Close();
return result;
}
///
///
///
/// sql
///
public int ExecuteNonQuery(string sql)
{
return ExecuteNonQuery(sql, CommandType.Text, null);
}
///
///
///
/// sql
/// , sql
///
public int ExecuteNonQuery(string sql, CommandType commandType)
{
return ExecuteNonQuery(sql, commandType, null);
}
///
///
///
/// sql
/// , sql
/// Transact-SQL
///
public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
{
int count = 0;
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = commandType;
if (parameters != null)
{
foreach(SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
con.Open();
count = cmd.ExecuteNonQuery();
con.Close();
return count;
}
///
///
///
///
public DataTable GetTables()
{
DataTable table = null;
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
table = con.GetSchema("Tables");
}
return table;
}
}
만약에 우리가 데이터베이스에 접근하는 유니버설 클래스를 구축한 후에 데이터베이스에 따라 조작할 때요? 먼저 실례화된 대상을 만들고 자신의 수요에 따라 해당하는 방법을 사용하면 데이터베이스에 대한 모든 조작을 완성할 수 있습니다.이것이 바로 데이터베이스 접근층과 업무 논리층이 분리된 장점이다.
이렇게 쓴 코드는 우리 코드의 복잡도를 크게 줄일 수 있다.그리고 번거로움도 크게 떨어졌다.
판권 성명: 본고는 블로거의 오리지널 문장으로 블로거의 허락 없이 전재할 수 없습니다.
전재 대상:https://www.cnblogs.com/yisuowushinian/archive/2012/09/20/4715649.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.