SQL.cs
上传用户:chinapurv
上传日期:2014-03-12
资源大小:4870k
文件大小:3k
源码类别:

教育系统应用

开发平台:

C#

  1. using System;
  2. using System.Windows.Forms;
  3. using System.Data.OleDb;
  4. namespace 图书管理系统
  5. {
  6. /// <summary>
  7. /// SQL 的摘要说明。
  8. /// </summary>
  9. public class SQL
  10. {
  11. OleDbConnection myConn;
  12. OleDbCommand myCmd;
  13. OleDbDataReader myDataReader;
  14. private int position;
  15. public object [,]rows;
  16. private string lastSelect;
  17. public SQL(string connectionString)
  18. {
  19. myConn=new OleDbConnection(connectionString);
  20. myCmd=new OleDbCommand();
  21. myCmd.Connection=myConn;
  22. myDataReader=null;
  23. position=0;
  24. rows=new object[0,0];
  25. lastSelect="";
  26. }
  27. private int GetColumnNumber(string commandText)
  28. {
  29. try
  30. {
  31. myConn.Open();
  32. myCmd.CommandText=commandText;
  33. myDataReader=myCmd.ExecuteReader();
  34. int Col_Number=myDataReader.FieldCount;
  35. return  Col_Number;
  36. }
  37. catch
  38. {
  39. return -1;
  40. }
  41. finally
  42. {
  43. myConn.Close();
  44. }
  45. }
  46. private int GetRowNumber(string commandText)
  47. {
  48. try
  49. {
  50. myConn.Open();
  51. myCmd.CommandText=commandText;
  52. myDataReader=myCmd.ExecuteReader();
  53. int Row_Number=0;
  54. while(myDataReader.Read()) ++Row_Number;
  55. return Row_Number;
  56. }
  57. catch
  58. {
  59. return -1;
  60. }
  61. finally
  62. {
  63. myConn.Close();
  64. }
  65. }
  66. private bool Select(string commandText)
  67. {
  68. position=0;
  69. int Row_Pos=0;
  70. int Col_Pos=0;
  71. int Row_Number=GetRowNumber(commandText);
  72. int Col_Number=GetColumnNumber(commandText);
  73. rows=new object[Row_Number,Col_Number];
  74. try
  75. {
  76. myConn.Open();
  77. myCmd.CommandText=commandText;
  78. myDataReader=myCmd.ExecuteReader();
  79. while(myDataReader.Read())
  80. {
  81. for(Col_Pos=0;Col_Pos<Col_Number;Col_Pos++)
  82. rows[Row_Pos,Col_Pos]=myDataReader[Col_Pos];
  83. ++Row_Pos;
  84. }
  85. lastSelect=commandText;
  86. return true;
  87. }
  88. catch
  89. {
  90. return false;
  91. }
  92. finally
  93. {
  94. myConn.Close();
  95. }
  96. }
  97. private bool NonQuery(string commandText)
  98. {
  99. try
  100. {
  101. myConn.Open();
  102. myCmd.CommandText=commandText;
  103. myCmd.ExecuteNonQuery();
  104. return true;
  105. }
  106. catch(Exception e1)
  107. {
  108. MessageBox.Show(e1.Message);
  109. myConn.Close();
  110. return false;
  111. }
  112. finally
  113. {
  114. myConn.Close();
  115. }
  116. }
  117. private string trimSpace(string str)
  118. {
  119. while(str.Substring(0,1)==" ") str=str.Substring(1);
  120. return str;
  121. }
  122. public bool ExecuteSQL(string commandText)
  123. {
  124. commandText=trimSpace(commandText);
  125. if(commandText.Substring(0,6).ToLower()=="select") return Select(commandText);
  126. else
  127. {
  128. if(NonQuery(commandText)==false)
  129. {
  130. if(lastSelect!="") Select(lastSelect);
  131. return false;
  132. }
  133. else 
  134. {
  135. if(lastSelect!="") Select(lastSelect);
  136. return true;
  137. }
  138. }
  139. }
  140. public bool pointToNext()
  141. {
  142. if(position<rows.GetLength(0)-1)
  143. {
  144. ++position;
  145. return true;
  146. }
  147. else return false;
  148. }
  149. public bool pointToPrev()
  150. {
  151. if(position>0)
  152. {
  153. --position;
  154. return true;
  155. }
  156. else return false;
  157. }
  158. public bool pointToFirst()
  159. {
  160. if(rows.GetLength(0)!=0)
  161. {
  162. position=0;
  163. return true;
  164. }
  165. else return false;
  166. }
  167. public bool pointToLast()
  168. {
  169. if(rows.GetLength(0)!=0)
  170. {
  171. position=rows.GetLength(0)-1;
  172. return true;
  173. }
  174. else return false;
  175. }
  176. public int getPos()
  177. {
  178. return position;
  179. }
  180. }
  181. }