Database.cs
上传用户:balance_rz
上传日期:2020-04-18
资源大小:103k
文件大小:3k
源码类别:

SCSI/ASPI

开发平台:

Others

  1. /**********************************************************
  2.  * 说明:MyChatRoom的数据操作层
  3.  * 作者:
  4.  * 创建日期:
  5.  *********************************************************/
  6. //51-A-s-p-x.com
  7. using System;
  8. using System.ComponentModel;
  9. using System.Collections;
  10. using System.Diagnostics;
  11. using System.Data;
  12. using System.Data.SqlClient;
  13. using System.Configuration;
  14. namespace MyChatRoom.DataAccessLayer
  15. {
  16. /// <summary>
  17. /// 数据访问类
  18. /// </summary>
  19. public class Database : IDisposable 
  20. {
  21. /// <summary>
  22. /// 保护变量,数据库连接。
  23. /// </summary>
  24. protected SqlConnection Connection;
  25. /// <summary>
  26. /// 保护变量,数据库连接串。
  27. /// </summary>
  28. protected String ConnectionString;
  29. /// <summary>
  30. /// 构造函数。
  31. /// </summary>
  32. /// <param name="DatabaseConnectionString">数据库连接串</param>
  33. public Database()
  34. {
  35. ConnectionString = ConfigurationManager.AppSettings["DBConnectionString"];
  36. }
  37. /// <summary>
  38. /// 析构函数,释放非托管资源
  39. /// </summary>
  40. ~Database()
  41. {
  42. try
  43. {
  44. if (Connection != null)
  45. Connection.Close();
  46. }
  47. catch{}
  48. try
  49. {
  50. Dispose();
  51. }
  52. catch{}
  53. }
  54. /// <summary>
  55. /// 保护方法,打开数据库连接。
  56. /// </summary>
  57. protected void Open() 
  58. {
  59. if (Connection == null)
  60. {
  61. Connection = new SqlConnection(ConnectionString);
  62. }
  63. if (Connection.State.Equals(ConnectionState.Closed))
  64. {
  65. Connection.Open();
  66. }
  67. }
  68. /// <summary>
  69. /// 公有方法,关闭数据库连接。
  70. /// </summary>
  71. public void Close() 
  72. {
  73. if (Connection != null)
  74. Connection.Close();
  75. }
  76. /// <summary>
  77. /// 公有方法,释放资源。
  78. /// </summary>
  79. public void Dispose() 
  80. {
  81. // 确保连接被关闭
  82. if (Connection != null) 
  83. {
  84. Connection.Dispose();
  85. Connection = null;
  86. }
  87. }
  88. /// <summary>
  89. /// 公有方法,获取数据,返回一个DataSet。
  90. /// </summary>
  91. /// <param name="SqlString">Sql语句</param>
  92. /// <returns>DataSet</returns>
  93. public DataSet GetDataSet(String SqlString)
  94. {
  95. Open();
  96. SqlDataAdapter adapter = new SqlDataAdapter(SqlString,Connection);
  97. DataSet dataset = new DataSet();
  98. adapter.Fill(dataset);
  99. Close();
  100. return dataset;
  101. }
  102. /// <summary>
  103. /// 公有方法,获取数据,返回一个DataRow。
  104. /// </summary>
  105. /// <param name="SqlString">Sql语句</param>
  106. /// <returns>DataRow</returns>
  107. public DataRow GetDataRow(String SqlString)
  108. {
  109. DataSet dataset = GetDataSet(SqlString);
  110. dataset.CaseSensitive = false;
  111. if (dataset.Tables[0].Rows.Count>0)
  112. {
  113. return dataset.Tables[0].Rows[0];
  114. }
  115. else
  116. {
  117. return null;
  118. }
  119. }
  120. /// <summary>
  121. /// 公有方法,执行Sql语句。
  122. /// </summary>
  123. /// <param name="SqlString">Sql语句</param>
  124. /// <returns>对Update、Insert、Delete为影响到的行数,其他情况为-1</returns>
  125. public int ExecuteSQL(String SqlString)
  126. {
  127. int count = -1;
  128. Open();
  129. try
  130. {
  131. SqlCommand cmd = new SqlCommand(SqlString,Connection);
  132. count = cmd.ExecuteNonQuery();
  133. }
  134. catch
  135. {
  136. count = -1;
  137. }
  138. finally
  139. {
  140. Close();
  141. }
  142. return count;
  143. }
  144. }
  145. }