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






}