要約:それは自分でデータアクセスクラスを記述しています
システムを使用しました。
System.Collections.Genericを使用しました。
System.Configurationを使用しました。
System.Dataを使用しました。
System.Data.SqlClientを使用します。
System.Linqのを使用しました。
System.Textのを使用しました。
System.Threading.Tasksを使用しました。
System.Web.UI.WebControls.WebPartsを使用しました。
System.Windows.Formsを使用しました。
名前空間のログイン
{
クラスCMD
{
//数据存取层第一版2013 0603
#regionの对象初始化
プライベートSqlConnectionオブジェクトt_conn = NULL; //连线字符串
プライベートSqlCommandオブジェクトt_cmd = NULL;
プライベートSqlDataAdapterオブジェクトt_da = NULL;
民間のDataSet t_ds = NULL;
民間のDataTable t_dt = NULL;
パブリックCMD()
{
t_conn = GetConn()。
t_cmd =新しいSqlCommandオブジェクト();
t_da =新しいSqlDataAdapterオブジェクト();
}
#endregion
#region取回连线字符串
パブリック静的SqlConnectionオブジェクトGetConn()//打开のSqlConnection
{
SqlConnectionのt_conn =新しいSqlConnectionオブジェクト(ConfigurationManager.ConnectionStrings [ "WinFormConn"]のConnectionString。)。
//はSystem.Configuration.ConfigurationSettings.AppSettings [ "AppConnectionStringを"]を返します。
t_conn返します。
}
#endregion
#region执行DDL
公共INT ExceSQLCommand(文字列SqlStr)//执行SqlCommandオブジェクト
{
INT、N = 0。
試す
{
t_cmd =新しいSqlCommandオブジェクト(SqlStr、GetConn())。
t_cmd.Connection.Open();
t_cmd.CommandType = CommandType.Text。
N = t_cmd.ExecuteNonQuery()。
}
キャッチ(例外例)
{
EXを投げます。
}
戻りN。
}
#endregion
#region取回は、ExecuteScalar
パブリックオブジェクトGetSingleObject(ストリングsqlstr)
{
オブジェクトOBJ = NULL;
t_cmd =新しいSqlCommandオブジェクト(sqlstr、GetConn());
t_cmd.CommandType = CommandType.Text。
試す
{
IF(t_cmd.Connection.State == ConnectionState.Closed)
{
t_cmd.Connection.Open()。
}
OBJ = t_cmd.ExecuteScalar()。
}
キャッチ(例外例)
{
EXを投げます。
} OBJを返します。
}
#endregion
#region取得DataReaderの
公共SqlDataReaderののGetDataReader(ストリングSqlStr)//取得のDataReader
{
試みる
{
t_cmd =新しいSqlCommandオブジェクト(SqlStr、GetConn())。
t_cmd.CommandType = CommandType.Text。
IF(t_cmd.Connection.State == ConnectionState.Closed)
{
t_cmd.Connection.Open();
}
SqlDataReaderのは、DR = t_cmd.ExecuteReader()。
DRを返します。
}
キャッチ(例外例)
{
EXを投げます。
}
}
パブリックSqlDataReaderののGetDataReader(ストリングSqlStr、SqlParameter []パラメータ)//取得DataReaderの并带N个参数
{
t_cmd =新しいSqlCommandオブジェクト(SqlStr、GetConn())。
t_cmd.CommandType = CommandType.Text。
foreachの(パラメータのSqlParameterのPARAM)
{
(param.Direction == ParameterDirection.Input)であれば
{
param.Direction = ParameterDirection.Input。
t_cmd.Parameters.Add(PARAM)。
}
そうであれば(param.Direction == ParameterDirection.Output)
{
param.Direction = ParameterDirection.Output。
t_cmd.Parameters.Add(PARAM)。
}
他(param.Direction == ParameterDirection.ReturnValue)であれば
{
param.Direction = ParameterDirection.ReturnValue。
t_cmd.Parameters.Add(PARAM)。
}
}
(t_cmd.Connection.State == ConnectionState.Closed)であれば
{
t_cmd.Connection.Open()。
}
SqlDataReaderのは、DR = t_cmd.ExecuteReader()。
DRを返します。
}
#endregion
#region执行预存进程
公共int型ExecStoreProc(文字列sqlstr)//不带任何参数
{
t_cmd =新しいSqlCommandオブジェクト(sqlstr、GetConn());
t_cmd.CommandType = CommandType.StoredProcedure;
IF(t_cmd.Connection.State == ConnectionState.Closed)
{
t_cmd.Connection.Open()。
}
INT N = t_cmd.ExecuteNonQuery()。
Nを返します。
}
公共INT ExecStoreProc(文字列sqlstr、SqlParameter []パラメータ)//执行StoreProcdurce并带N组参数
{
t_cmd =新しいSqlCommandオブジェクト(sqlstr、GetConn())。
t_cmd.CommandType = CommandType.StoredProcedure;
foreachの(パラメータのSqlParameterのPARAM)
{
IF(param.Direction == ParameterDirection.Input)
{
param.Direction = ParameterDirection.Input。
t_cmd.Parameters.Add(PARAM)。
}
他(param.Direction == ParameterDirection.Output)であれば
{
param.Direction = ParameterDirection.Output。
t_cmd.Parameters.Add(PARAM)。
}
他(param.Direction == ParameterDirection.ReturnValue)であれば
{
param.Direction = ParameterDirection.ReturnValue。
t_cmd.Parameters.Add(PARAM)。
}
}
(t_cmd.Connection.State == ConnectionState.Closed)であれば
{
t_cmd.Connection.Open()。
}
INT N = t_cmd.ExecuteNonQuery()。
N-リターン;
}
#endregionの
#region戻りデータセットを取得、データテーブル(DS、DT)
公衆GetDataTableデータテーブルを返し//データテーブル(SqlStr文字、文字列テーブル)
{
試み
{
t_dtをデータテーブル新しい新=();
t_da.SelectCommand = t_cmd (SqlStr、GetConn());
t_da.Fill(t_dt);
戻りt_dt;
}
キャッチ(例外EX)
{
スローEX;
}
}
パブリックGetDataTableデータテーブルを返す//データテーブル(SqlStr文字、文字列テーブル、SqlParameter []パラメータ)
{
試します
{
t_dt =新しいデータテーブル()。
t_cmd =新しいSqlCommandオブジェクト(SqlStr、GetConn());
foreachの(パラメータのSqlParameterのPARAM)
{
(param.Direction == ParameterDirection.Input)であれば
{
param.Direction = ParameterDirection.Input。
t_cmd.Parameters.Add(PARAM)。
}
他(param.Direction == ParameterDirection.Output)であれば
{
param.Direction = ParameterDirection.Output。
t_cmd.Parameters.Add(PARAM)。
}
そうであれば(param.Direction == ParameterDirection.ReturnValue)
{
param.Direction = ParameterDirection.ReturnValue。
t_cmd.Parameters.Add(PARAM)。
}
}
t_da.SelectCommand = t_cmd。
t_da.Fill(t_dt)。
t_dt返します。
}
キャッチ(例外例)
{
EXを投げます。
}
}
//返回データセットパブリックデータセットGetDataSet(文字列SqlStr、文字列テーブル)
{
試みます
{
t_ds =新しいデータセット();
t_cmd =新しいSqlCommandオブジェクト(SqlStr、GetConn());
t_da.SelectCommand = t_cmd。
t_da.Fill(t_ds、表)。
t_dsを返します。
}
キャッチ(例外例)
{
EXを投げます。
}
}
パブリックデータセットGetDataSet(ストリングSqlStr、文字列テーブルは、SqlParameter []パラメータ)//返回データセットは
{
試みる
{
t_ds =新しいデータセット()。
t_cmd =新しいSqlCommandオブジェクト(SqlStr、GetConn());
foreachの(パラメータのSqlParameterのPARAM)
{
IF(param.Direction == ParameterDirection.Input)
{
param.Direction = ParameterDirection.Input。
t_cmd.Parameters.Add(PARAM)。
}
他(param.Direction == ParameterDirection.Output)であれば
{
param.Direction = ParameterDirection.Output。
t_cmd.Parameters.Add(PARAM)。
}
他(param.Direction == ParameterDirection.ReturnValue)であれば
{
param.Direction = ParameterDirection.ReturnValue。
t_cmd.Parameters.Add(PARAM)。
}
}
t_da.SelectCommand = t_cmd。
t_da.Fill(t_ds、表)。
t_dsを返します。
}
キャッチ(例外例)
{
EXを投げます。
}
}
#endregion
#region释放对象
公共ボイドDBFree()
{
IF(t_cmd.Connection.State == ConnectionState.Open)
{
t_cmd.Connection.Close()。
t_cmd.Connection.Dispose();
t_conn = NULL;
}
(!= nullのをt_cmd)であれば
{
t_cmd.Dispose();
}
IF(t_ds = NULL!)
{
t_ds.Dispose()。
}
IF(t_dt = NULL!)
{
t_dt.Dispose()。
}
IF(t_da = NULL!)
{
t_da.Dispose()。
}
}
#endregion
}
}
オリジナル:大列 独自のデータアクセスクラスを記述するために