Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

176 строки
5.9 KiB

  1. using MySql.Data.MySqlClient;
  2. using System.Data;
  3. using System.Windows.Forms;
  4. namespace StuMgmLib.MyNameSpace
  5. {
  6. /// <summary>
  7. /// 数据操作
  8. /// </summary>
  9. public class DataAnalyze
  10. {
  11. private enum verifyCode : short
  12. {
  13. error = -1,
  14. notFound = -2,
  15. admin = 1,
  16. teacher = 2,
  17. student = 3,
  18. }
  19. private const string conStr = "data source=localhost; initial catalog=xinje; user id=root; pwd=980505;charset = utf8";
  20. /* Recv: ___________________________________________________________________
  21. * | Account | Password | (SqlOperate) |
  22. * |___short_____string______string[]________________________________________|
  23. * Analyze:
  24. * Account Permission (SqlOperate)
  25. *
  26. * Send: ____________________________________________________________________
  27. * | Permission | DataSet |
  28. * |___short________DS_______________________________________________________________|
  29. */
  30. /// <summary>
  31. /// 解析ClientSend
  32. /// </summary>
  33. public static Info.ServerSend ClientSendAnalyze(Info.ClientSend cs)
  34. {
  35. Info.ServerSend ss = new Info.ServerSend();
  36. ss.permission = loginVerify(cs.account, cs.password); // 验证身份
  37. if (ss.permission < 0) // 小于0,则权限有误
  38. {
  39. ss.ds = null;
  40. return ss;
  41. }
  42. bool sqlRes = false;
  43. if (cs.sqlStr != null) // sql语句为空,则表示仅登录验证,应
  44. {
  45. sqlRes = mySqlModify(cs.sqlStr);
  46. }
  47. string[] tbName;
  48. bool stuFlag = false;
  49. switch (ss.permission)
  50. {
  51. case (short)verifyCode.admin:
  52. tbName = new string[] { "user_info", "course_info", "user" };
  53. break;
  54. case (short)verifyCode.teacher:
  55. tbName = new string[] { "user_info", "course_info" };
  56. break;
  57. case (short)verifyCode.student:
  58. tbName = new string[] { "user_info", "course_info" };
  59. stuFlag = true; break;
  60. default:
  61. tbName = null;
  62. break;
  63. }
  64. ss.ds = getDataSet(tbName, stuFlag, cs.account);
  65. return ss;
  66. }
  67. /// <summary>
  68. /// 登录验证,若失败,则返回错误码;若身份验证成功,则返回用户权限;
  69. /// </summary>
  70. private static short loginVerify(short account, string psw)
  71. {
  72. short notFound = -1;
  73. short error = -2;
  74. string qStu = "select * from user where account = " + account + " and password = '" + psw + "'";
  75. MySqlConnection con = new MySqlConnection(conStr);
  76. try
  77. {
  78. con.Open();
  79. MySqlCommand mCmd = new MySqlCommand(qStu, con);
  80. MySqlDataReader mReader = mCmd.ExecuteReader();
  81. if (mReader.HasRows)
  82. {
  83. mReader.Read();
  84. return mReader.GetInt16("permission");
  85. }
  86. else
  87. return notFound;
  88. }
  89. catch (MySqlException mySqlEx)
  90. {
  91. MessageBox.Show(mySqlEx.Message);
  92. return error;
  93. }
  94. finally
  95. {
  96. con.Close();
  97. }
  98. }
  99. /// <summary>
  100. /// 改
  101. /// </summary>
  102. private static bool mySqlModify(string[] sqlStr)
  103. {
  104. MySqlConnection con = new MySqlConnection(conStr);
  105. try
  106. {
  107. con.Open();
  108. int len = sqlStr.Length;
  109. for (int index = 0; index < len; index++)
  110. {
  111. MySqlCommand mCmd = new MySqlCommand(sqlStr[index], con); // Need to change ......
  112. // To do sth here ......
  113. }
  114. return true;
  115. }
  116. catch
  117. {
  118. return false;
  119. }
  120. finally
  121. {
  122. con.Close();
  123. }
  124. }
  125. /// <summary>
  126. /// 查 将各表填入dataset
  127. /// </summary>
  128. private static DataSet getDataSet(string[] tbName, bool stuFlag, int account)
  129. {
  130. string str = "select * from ";
  131. MySqlConnection con = new MySqlConnection(conStr);
  132. try
  133. {
  134. con.Open();
  135. DataSet ds = new DataSet();
  136. for (int index = 0; index < tbName.Length; index++)
  137. {
  138. string newStr = str + " " + tbName[index];
  139. if ((stuFlag == true) && (tbName[index] == "user_info"))
  140. {
  141. newStr += "where job_id = " + account.ToString();
  142. }
  143. MySqlCommand mCmd = new MySqlCommand(newStr, con);
  144. MySqlDataReader mReader = mCmd.ExecuteReader();
  145. DataTable dt = new DataTable();
  146. dt.Load(mReader);
  147. dt.TableName = tbName[index];
  148. ds.Tables.Add(dt);
  149. }
  150. return ds;
  151. }
  152. catch (MySqlException mySqlEx)
  153. {
  154. MessageBox.Show(mySqlEx.Message);
  155. return null;
  156. }
  157. finally
  158. {
  159. con.Close();
  160. }
  161. }
  162. }
  163. }