Asp.net源码专业站
首页->论坛社区->三层小型论坛系统源码>>App-Code/DataAccessLayer/Database.cs>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:三层小型论坛系统源码
当前文件:文件类型 myBBS/App_Code/DataAccessLayer/Database.cs[5K,2009-6-12 11:48:08]打开代码结构图
普通视图
		            
1using System; 2using System.ComponentModel; 3using System.Collections; 4using System.Diagnostics; 5using System.Data; 6using System.Data.SqlClient; 7using System.Configuration; 8 9namespace 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}
还没有找到您心仪的内容?请用.net源码大搜捕
代码片断 打包下载该项目完整源码:三层小型论坛系统源码
51Aspx.com 版权所有 CopyRight © 2006-2010. 京ICP备06046876号 本站法律顾问:ITlaw-庄毅雄律师
返回顶部
客户服务:点击这里进行客户咨询 业务合作:点击这里洽谈业务合作 合作热线:010-68880146