主要参考了M$的SqlHelper类,
在参考了SqlHelper的基础进行修改而成,对一些基本的数据库操作进行了封装.
推荐使用
using
(DBHelper db
=
new
DBHelper(Config.ConnStr))
{
}
代码如下:
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Data.SqlClient;
using
System.Data;
namespace
Liydotnet.Data.Core
{
public
class
DBHelper : IDisposable
{
#region
private
private
bool
m_AlreadyDispose
=
false
;
private
int
m_CommandTimeout
=
30
;
private
string
m_ConnStr;
private
SqlConnection m_Connection;
private
SqlCommand m_Command;
#endregion
#region
属性
///
<summary>
///
数据库连接字符串
///
</summary>
public
string
ConnStr
{
set
{ m_ConnStr
=
value; }
get
{
return
m_ConnStr; }
}
///
<summary>
///
执行时间
///
</summary>
public
int
CommandTimeout
{
set
{ m_CommandTimeout
=
value; }
get
{
return
m_CommandTimeout; }
}
#endregion
#region
DBHelper
///
<summary>
///
构造函数
///
</summary>
///
<param name="connStr">
数据库连接字符串
</param>
public
DBHelper(
string
connStr)
{
m_ConnStr
=
connStr;
Initialization();
}
///
<summary>
///
构造函数
///
</summary>
///
<param name="connStr">
数据库连接字符串
</param>
///
<param name="commandTimeout">
执行时间
</param>
public
DBHelper(
string
connStr,
int
commandTimeout)
{
m_ConnStr
=
connStr;
m_CommandTimeout
=
commandTimeout;
Initialization();
}
///
<summary>
///
初始化函数
///
</summary>
protected
void
Initialization()
{
try
{
m_Connection
=
new
SqlConnection(m_ConnStr);
if
(m_Connection.State
==
ConnectionState.Closed)
m_Connection.Open();
m_Command
=
new
SqlCommand();
}
catch
(Exception ex)
{
throw
new
Exception(ex.Message.ToString());
}
}
#endregion
#region
Dispose
///
<summary>
///
析构函数
///
</summary>
~
DBHelper()
{
Dispose();
}
///
<summary>
///
释放资源
///
</summary>
///
<param name="isDisposing">
标志
</param>
protected
virtual
void
Dispose(
bool
isDisposing)
{
if
(m_AlreadyDispose)
return
;
if
(isDisposing)
{
if
(m_Command
!=
null
)
{
m_Command.Cancel();
m_Command.Dispose();
}
if
(m_Connection
!=
null
)
{
try
{
if
(m_Connection.State
!=
ConnectionState.Closed)
m_Connection.Close();
m_Connection.Dispose();
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
m_Connection
=
null
;
}
}
}
m_AlreadyDispose
=
true
;
//
已经进行的处理
}
///
<summary>
///
释放资源
///
</summary>
public
void
Dispose()
{
Dispose(
true
);
GC.SuppressFinalize(
this
);
}
#endregion
#region
#endregion
#region
ExecuteNonQuery
public
int
ExecuteNonQuery(
string
cmdText)
{
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
int
iRet
=
m_Command.ExecuteNonQuery();
return
iRet;
}
catch
(Exception ex)
{
//
Loger.Debug(ex.ToString(),@"C:\sql.txt");
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
}
}
public
int
ExecuteNonQuery(
string
cmdText, SqlParameter[] para)
{
if
(para
==
null
)
{
return
ExecuteNonQuery(cmdText);
}
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
int
iRet
=
m_Command.ExecuteNonQuery();
return
iRet;
}
catch
(Exception ex)
{
//
Loger.Debug(ex.ToString(), @"C:\sql.txt");
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
m_Command.Parameters.Clear();
}
}
public
int
ExecuteNonQuery(
string
cmdText, SqlParameter[] para,
bool
isStoreProdure)
{
if
(
!
isStoreProdure)
{
return
ExecuteNonQuery(cmdText, para);
}
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
m_Command.CommandType
=
CommandType.StoredProcedure;
if
(para
!=
null
)
{
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
}
int
iRet
=
m_Command.ExecuteNonQuery();
return
iRet;
}
catch
(Exception ex)
{
//
Loger.Debug(ex.ToString(), @"C:\sql.txt");
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
m_Command.Parameters.Clear();
}
}
#endregion
#region
ExecuteTransaction
public
bool
ExecuteTransaction(
string
[] cmdText)
{
SqlTransaction trans
=
m_Connection.BeginTransaction();
try
{
m_Command
=
new
SqlCommand();
m_Command.Connection
=
m_Connection;
m_Command.CommandTimeout
=
m_CommandTimeout;
m_Command.Transaction
=
trans;
for
(
int
i
=
0
; i
<
cmdText.Length; i
++
)
{
if
(cmdText[i]
!=
null
&&
cmdText[i]
!=
string
.Empty)
{
m_Command.CommandText
=
cmdText[i];
m_Command.ExecuteNonQuery();
}
}
trans.Commit();
return
true
;
}
catch
(Exception ex)
{
trans.Rollback();
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
trans.Dispose();
}
}
public
bool
ExecuteTransaction(
string
[] cmdText, SqlParameter[] para)
{
if
(para
==
null
)
return
ExecuteTransaction(cmdText);
SqlTransaction trans
=
m_Connection.BeginTransaction();
try
{
m_Command
=
new
SqlCommand();
m_Command.Connection
=
m_Connection;
m_Command.CommandTimeout
=
m_CommandTimeout;
m_Command.Transaction
=
trans;
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
for
(
int
i
=
0
; i
<
cmdText.Length; i
++
)
{
if
(cmdText[i]
!=
null
&&
cmdText[i]
!=
string
.Empty)
{
m_Command.CommandText
=
cmdText[i];
m_Command.ExecuteNonQuery();
}
}
trans.Commit();
return
true
;
}
catch
(Exception ex)
{
trans.Rollback();
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
trans.Dispose();
}
}
#endregion
#region
ExecuteScalar
public
object
ExecuteScalar(
string
cmdText)
{
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
object
obj
=
m_Command.ExecuteScalar();
if
(
object
.Equals(obj,
null
)
||
object
.Equals(obj, DBNull.Value))
{
obj
=
null
;
}
return
obj;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
}
}
public
object
ExecuteScalar(
string
cmdText, SqlParameter[] para)
{
if
(para
==
null
)
return
ExecuteScalar(cmdText);
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
object
obj
=
m_Command.ExecuteScalar();
if
(
object
.Equals(obj,
null
)
||
object
.Equals(obj, DBNull.Value))
obj
=
null
;
return
obj;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
m_Command.Parameters.Clear();
}
}
public
object
ExecuteScalar(
string
cmdText, SqlParameter[] para,
bool
isStoreProdure)
{
if
(
!
isStoreProdure)
return
ExecuteScalar(cmdText, para);
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
m_Command.CommandType
=
CommandType.StoredProcedure;
if
(para
!=
null
)
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
object
obj
=
m_Command.ExecuteScalar();
if
(
object
.Equals(obj,
null
)
||
object
.Equals(obj, DBNull.Value))
obj
=
null
;
return
obj;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
{
m_Command.Dispose();
}
m_Command.Parameters.Clear();
}
}
#endregion
#region
ExecuteDataTable
public
DataTable ExecuteDataTable(
string
tableName,
string
cmdText)
{
try
{
DataTable myTable
=
new
DataTable(tableName);
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
SqlDataAdapter da
=
new
SqlDataAdapter(m_Command);
da.Fill(myTable);
da.Dispose();
return
myTable;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
}
}
public
DataTable ExecuteDataTable(
string
tableName,
string
cmdText, SqlParameter[] para)
{
if
(para
==
null
)
return
ExecuteDataTable(tableName, cmdText);
try
{
DataTable myTable
=
new
DataTable(tableName);
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
SqlDataAdapter da
=
new
SqlDataAdapter(m_Command);
da.Fill(myTable);
da.Dispose();
return
myTable;
}
catch
(Exception ex)
{
//
Loger.Debug(ex.ToString(), @"C:\sql.txt");
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
m_Command.Parameters.Clear();
}
}
public
DataTable ExecuteDataTable(
string
tableName,
string
cmdText, SqlParameter[] para,
bool
isStoreProdure)
{
if
(
!
isStoreProdure)
{
return
ExecuteDataTable(tableName, cmdText, para);
}
try
{
DataTable myTable
=
new
DataTable(tableName);
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
m_Command.CommandType
=
CommandType.StoredProcedure;
if
(para
!=
null
)
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
SqlDataAdapter da
=
new
SqlDataAdapter(m_Command);
da.Fill(myTable);
da.Dispose();
return
myTable;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
m_Command.Parameters.Clear();
}
}
#endregion
#region
ExecuteDataReader
public
SqlDataReader ExecuteDataReader(
string
cmdText)
{
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
SqlDataReader reader
=
m_Command.ExecuteReader();
return
reader;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
}
}
public
SqlDataReader ExecuteDataReader(
string
cmdText, SqlParameter[] para)
{
if
(para
==
null
)
{
return
ExecuteDataReader(cmdText);
}
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
SqlDataReader reader
=
m_Command.ExecuteReader();
return
reader;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
m_Command.Parameters.Clear();
}
}
public
SqlDataReader ExecuteDataReader(
string
cmdText, SqlParameter[] para,
bool
isStoreProdure)
{
if
(
!
isStoreProdure)
{
return
ExecuteDataReader(cmdText, para);
}
try
{
m_Command
=
new
SqlCommand(cmdText, m_Connection);
m_Command.CommandTimeout
=
m_CommandTimeout;
m_Command.CommandType
=
CommandType.StoredProcedure;
if
(para
!=
null
)
for
(
int
i
=
0
; i
<
para.Length; i
++
)
m_Command.Parameters.Add(para[i]);
SqlDataReader reader
=
m_Command.ExecuteReader();
return
reader;
}
catch
(Exception ex)
{
throw
new
Exception(ex.ToString());
}
finally
{
if
(m_Command
!=
null
)
m_Command.Dispose();
m_Command.Parameters.Clear();
}
}
#endregion
#region
Static
public
static
SqlParameter MakeInParam(
string
paraName, SqlDbType paraType,
object
value)
{
SqlParameter para
=
new
SqlParameter(paraName, paraType);
if
(Object.Equals(value,
null
)
||
Object.Equals(value, DBNull.Value)
||
value.ToString().Trim()
==
string
.Empty)
para.Value
=
DBNull.Value;
else
para.Value
=
value;
return
para;
}
public
static
SqlParameter MakeInParam(
string
paraName, SqlDbType paraType,
int
len,
object
value)
{
SqlParameter para
=
new
SqlParameter(paraName, paraType, len);
if
(Object.Equals(value,
null
)
||
Object.Equals(value, DBNull.Value)
||
value.ToString().Trim()
==
string
.Empty)
para.Value
=
DBNull.Value;
else
para.Value
=
value;
return
para;
}
#endregion
}
}