温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:我的小书坊源码(三层实现)
当前文件:
MyBookShop/App_Code/DataAccessLayer/Database.cs,打开代码结构图
MyBookShop/App_Code/DataAccessLayer/Database.cs,打开代码结构图1using System; 2
using System.ComponentModel; 3
using System.Collections; 4
using System.Diagnostics; 5
using System.Data; 6
using System.Data.SqlClient; 7
using System.Configuration; 8
//该源码下载自www.51aspx.com(51aspx.com) 9
10
using MyBookShop.DataAccessHelper; 11
12
namespace MyBookShop.DataAccessLayer 13
{ 14
/// <summary> 15
/// 类,用于数据访问的类。 16
/// </summary> 17
public class Database : IDisposable 18
{ 19
/// <summary> 20
/// 保护变量,数据库连接。 21
/// </summary> 22
protected SqlConnection Connection; 23
24
/// <summary> 25
/// 保护变量,数据库连接串。 26
/// </summary> 27
protected String ConnectionString; 28
29
/// <summary> 30
/// 构造函数。 31
/// </summary> 32
/// <param name="DatabaseConnectionString">数据库连接串</param> 33
public Database() 34
{ 35
ConnectionString =ConfigurationManager.AppSettings["DBConnectionString"]; 36
} 37
38
/// <summary> 39
/// 析构函数,释放非托管资源 40
/// </summary> 41
~Database() 42
{ 43
try 44
{ 45
if (Connection != null) 46
Connection.Close(); 47
} 48
catch{} 49
try 50
{ 51
Dispose(); 52
} 53
catch{} 54
} 55
56
/// <summary> 57
/// 保护方法,打开数据库连接。 58
/// </summary> 59
protected void Open() 60
{ 61
if (Connection == null) 62
{ 63
Connection = new SqlConnection(ConnectionString); 64
} 65
if (Connection.State.Equals(ConnectionState.Closed)) 66
{ 67
Connection.Open(); 68
} 69
} 70
71
/// <summary> 72
/// 公有方法,关闭数据库连接。 73
/// </summary> 74
public void Close() 75
{ 76
if (Connection != null) 77
Connection.Close(); 78
} 79
80
/// <summary> 81
/// 公有方法,释放资源。 82
/// </summary> 83
public void Dispose() 84
{ 85
// 确保连接被关闭 86
if (Connection != null) 87
{ 88
Connection.Dispose(); 89
Connection = null; 90
} 91
} 92
93
/// <summary> 94
/// 公有方法,获取数据,返回一个SqlDataReader (调用后主意调用SqlDataReader.Close())。 95
/// </summary> 96
/// <param name="SqlString">Sql语句</param> 97
/// <returns>SqlDataReader</returns> 98
public SqlDataReader GetDataReader(String SqlString) 99
{ 100
Open(); 101
SqlCommand cmd = new SqlCommand(SqlString,Connection); 102
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 103
} 104
105
/// <summary> 106
/// 公有方法,获取数据,返回一个SqlDataReader (调用后主意调用SqlDataReader.Close()、Database.Close())。 107
/// </summary> 108
/// <param name="SqlString">Sql语句</param> 109
/// <returns>SqlDataReader</returns> 110
public SqlDataReader GetSaDataReader(String SqlString) 111
{ 112
Open(); 113
SqlCommand cmd = new SqlCommand(SqlString,Connection); 114
return cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess); 115
} 116
117
/// <summary> 118
/// 公有方法,获取数据,返回一个DataSet。 119
/// </summary> 120
/// <param name="SqlString">Sql语句</param> 121
/// <returns>DataSet</returns> 122
public DataSet GetDataSet(String SqlString) 123
{ 124
Open(); 125
SqlDataAdapter adapter = new SqlDataAdapter(SqlString,Connection); 126
DataSet dataset = new DataSet(); 127
adapter.Fill(dataset); 128
Close(); 129
return dataset; 130
} 131
//51_a_s_p_x.c_o_m 132
133
/// <summary> 134
/// 公有方法,获取数据,返回一个DataTable。 135
/// </summary> 136
/// <param name="SqlString">Sql语句</param> 137
/// <returns>DataTable</returns> 138
public DataTable GetDataTable(String SqlString) 139
{ 140
DataSet dataset = GetDataSet(SqlString); 141
dataset.CaseSensitive = false; 142
return dataset.Tables[0]; 143
} 144
145
/// <summary> 146
/// 公有方法,获取数据,返回一个DataRow。 147
/// </summary> 148
/// <param name="SqlString">Sql语句</param> 149
/// <returns>DataRow</returns> 150
public DataRow GetDataRow(String SqlString) 151
{ 152
DataSet dataset = GetDataSet(SqlString); 153
dataset.CaseSensitive = false; 154
if (dataset.Tables[0].Rows.Count>0) 155
{ 156
return dataset.Tables[0].Rows[0]; 157
} 158
else 159
{ 160
return null; 161
} 162
} 163
164
/// <summary> 165
/// 公有方法,执行Sql语句。 166
/// </summary> 167
/// <param name="SqlString">Sql语句</param> 168
/// <returns>对Update、Insert、Delete为影响到的行数,其他情况为-1</returns> 169
public int ExecuteSQL(String SqlString) 170
{ 171
int count = -1; 172
Open(); 173
try 174
{ 175
SqlCommand cmd = new SqlCommand(SqlString,Connection); 176
count = cmd.ExecuteNonQuery(); 177
} 178
catch 179
{ 180
count = -1; 181
} 182
finally 183
{ 184
Close(); 185
} 186
return count; 187
} 188
189
/// <summary> 190
/// 公有方法,执行一组Sql语句。 191
/// </summary> 192
/// <param name="SqlStrings">Sql语句组</param> 193
/// <returns>是否成功</returns> 194
public bool ExecuteSQL(String[] SqlStrings) 195
{ 196
bool success = true; 197
Open(); 198
SqlCommand cmd = new SqlCommand(); 199
SqlTransaction trans = Connection.BeginTransaction(); 200
cmd.Connection = Connection; 201
cmd.Transaction = trans; 202
try 203
{ 204
foreach (String str in SqlStrings) 205
{ 206
cmd.CommandText = str; 207
cmd.ExecuteNonQuery(); 208
} 209
trans.Commit(); 210
} 211
catch 212
{ 213
success = false; 214
trans.Rollback(); 215
} 216
finally 217
{ 218
Close(); 219
} 220
return success; 221
} 222
223
/// <summary> 224
/// 公有方法,执行一组Sql语句。 225
/// </summary> 226
/// <param name="SqlStrings">Sql语句组</param> 227
/// <returns>是否成功</returns> 228
public bool ExecuteSQL(ArrayList SqlStrings) 229
{ 230
bool success = true; 231
Open(); 232
SqlCommand cmd = new SqlCommand(); 233
SqlTransaction trans = Connection.BeginTransaction(); 234
cmd.Connection = Connection; 235
cmd.Transaction = trans; 236
try 237
{ 238
foreach (String str in SqlStrings) 239
{ 240
cmd.CommandText = str; 241
cmd.ExecuteNonQuery(); 242
} 243
trans.Commit(); 244
} 245
catch 246
{ 247
success = false; 248
trans.Rollback(); 249
} 250
finally 251
{ 252
Close(); 253
} 254
return success; 255
} 256
257
/// <summary> 258
/// 公有方法,在一个数据表中插入一条记录。 259
/// </summary> 260
/// <param name="TableName">表名</param> 261
/// <param name="Cols">哈西表,键值为字段名,值为字段值</param> 262
/// <returns>是否成功</returns> 263
public bool Insert(String TableName,Hashtable Cols) 264
{ 265
int Count = 0; 266
267
if (Cols.Count<=0) 268
{ 269
return true; 270
} 271
272
String Fields = " ("; 273
String Values = " Values("; 274
foreach(DictionaryEntry item in Cols) 275
{ 276
if (Count!=0) 277
{ 278
Fields += ","; 279
Values += ","; 280
} 281
Fields += "["+item.Key.ToString()+"]"; 282
Values += item.Value.ToString(); 283
![]()




