当前位置:   article > 正文

C#连接MySQL

c#连接mysql

一、环境搭配

         安装MySQL,引用MySql.Data.DLL文件,这个MySql.Data.DLL文件在你安装Mysql的时候已经下载好给你的了。

        把它复制到项目的Debug目录下,然后引用即可。

二、连接使用步骤

        声明对象,有连接对象,语句执行对象,结果读取对象,在这我们要先引用一下MysqlClient。

 

  1. //连接对象
  2. MySqlConnection conn=null;
  3. //语句执行对象
  4. MySqlCommand comm=null;
  5. //语句执行结果数据对象
  6. MySqlDataReader dr = null;

        连接数据库

 conn = new MySqlConnection("Database = stu;Server = localhost;Port = 3306;Password = 123456;UserID = root;charset = utf8mb4");

        sql语句命令对象

comm = new MySqlCommand("select * from user",conn);

        执行语句获取数据

  1. dr = comm.ExecuteReader(); /*查询*/
  2. //dr = comm.ExecuteNonQuery(); /*增删改*/
  3. while (dr.Read())
  4. {
  5. tbText.Text += dr.GetString("对应表字段名称") + "----" + dr.GetString("password");
  6. tbText.Text += "\r";
  7. }
  8. dr.Close();
  9. conn.Close();

        注意使用完,我们要关闭掉连接资源。如果连接失败,可能是版本不对,活动平台要修改成x86的平台。

三、功能代码实现

         首先创建一个数据库,随便写入几条数据。

  1. CREATE TABLE `user` (
  2. `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  3. `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  5. insert into user values('jack','sss');
  6. insert into user values('123','123');

        布局 有一个CheckedListBox控件,方便勾选删除。

        代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using MySql.Data.MySqlClient;
  11. using MySql.Data;
  12. namespace MysqlText
  13. {
  14. public partial class frm_main : Form
  15. {
  16. //连接对象
  17. MySqlConnection conn=null;
  18. //语句执行对象
  19. MySqlCommand comm=null;
  20. //语句执行结果数据对象
  21. MySqlDataReader dr = null;
  22. string strConn = "";
  23. public frm_main()
  24. {
  25. InitializeComponent();
  26. strConn = "Database = stu;Server = localhost;Port = 3306;Password = 123456;UserID = root;charset = utf8mb4";
  27. conn = new MySqlConnection(strConn);
  28. }
  29. /// <summary>
  30. /// 连接
  31. /// </summary>
  32. /// <param name="sender"></param>
  33. /// <param name="e"></param>
  34. private void btnConn_Click(object sender, EventArgs e)
  35. {
  36. //判断连接状态
  37. if (conn.State != ConnectionState.Open)
  38. {
  39. conn.Open();
  40. tbText.Text = strConn;
  41. label4.Text = "";
  42. label4.Text = "连接成功";
  43. }
  44. }
  45. /// <summary>
  46. /// 查询
  47. /// </summary>
  48. /// <param name="sender"></param>
  49. /// <param name="e"></param>
  50. private void btnSel_Click(object sender, EventArgs e)
  51. {
  52. //判断连接状态
  53. if (!CkeckConn())
  54. {
  55. MessageBox.Show("请连接数据库");
  56. return;
  57. }
  58. comm = new MySqlCommand("select * from user", conn);
  59. tbText.Text = "";
  60. dr = comm.ExecuteReader(); /*查询*/
  61. while (dr.Read())
  62. {
  63. tbText.Text += dr.GetString("username") + "----" + dr.GetString("password");
  64. tbText.Text += "\r\n";
  65. }
  66. dr.Close();
  67. ckLBoxsRefresh();
  68. }
  69. /// <summary>
  70. /// 添加
  71. /// </summary>
  72. /// <param name="sender"></param>
  73. /// <param name="e"></param>
  74. private void btnAdd_Click(object sender, EventArgs e)
  75. {
  76. //判断连接状态
  77. if (!CkeckConn())
  78. {
  79. MessageBox.Show("请连接数据库");
  80. return;
  81. }
  82. label4.Text = "";
  83. //先判断用户是否已注册
  84. if (tbUser.Text =="" || tbPW.Text=="")
  85. {
  86. label4.Text = "请完善信息";
  87. return;
  88. }
  89. comm = new MySqlCommand("select * from user where username = '" + tbUser.Text + "'", conn);
  90. dr = comm.ExecuteReader();
  91. if (dr.Read())
  92. {
  93. label4.Text = "已存在用户" + tbUser.Text;
  94. }
  95. else
  96. {
  97. dr.Close();
  98. int num = 0;
  99. comm = new MySqlCommand("insert into user values('" + tbUser.Text + "','" + tbPW.Text + "')", conn);
  100. num = comm.ExecuteNonQuery();
  101. if (num > 0)
  102. {
  103. label4.Text = "已添加用户" + tbUser.Text;
  104. ckLBoxsRefresh();
  105. tbText.Text = "";
  106. }
  107. else
  108. {
  109. label4.Text = "添加失败";
  110. }
  111. }
  112. dr.Close();
  113. }
  114. /// <summary>
  115. /// 修改
  116. /// </summary>
  117. /// <param name="sender"></param>
  118. /// <param name="e"></param>
  119. private void btnUp_Click(object sender, EventArgs e)
  120. {
  121. //判断连接状态
  122. if (!CkeckConn())
  123. {
  124. MessageBox.Show("请连接数据库");
  125. return;
  126. }
  127. label4.Text = "";
  128. //先判断用户是否已注册
  129. comm = new MySqlCommand("select * from user where username = '" + tbUpUser.Text + "'", conn);
  130. dr = comm.ExecuteReader();
  131. if (dr.Read())
  132. {
  133. dr.Close();
  134. int num = 0;
  135. comm = new MySqlCommand("update user set password = '" + tbUpPW.Text + "'where username = '" + tbUpUser.Text + "'", conn);
  136. num = comm.ExecuteNonQuery();
  137. if (num > 0)
  138. {
  139. label4.Text = "已修改用户" + tbUpUser.Text + "密码";
  140. tbText.Text = "";
  141. }
  142. else
  143. {
  144. label4.Text = "修改失败";
  145. }
  146. }
  147. else
  148. {
  149. label4.Text = "用户不存在";
  150. }
  151. dr.Close();
  152. }
  153. /// <summary>
  154. /// 删除
  155. /// </summary>
  156. /// <param name="sender"></param>
  157. /// <param name="e"></param>
  158. private void btnDel_Click(object sender, EventArgs e)
  159. {
  160. //判断连接状态
  161. if (!CkeckConn())
  162. {
  163. MessageBox.Show("请连接数据库");
  164. return;
  165. }
  166. label4.Text = "";
  167. //查找选中
  168. for (int i = 0; i < ckLBoxs.Items.Count; i++)
  169. {
  170. if (ckLBoxs.GetItemChecked(i))
  171. {
  172. int num = 0;
  173. comm = new MySqlCommand("delete from user where username = '" + ckLBoxs.Items[i].ToString() + "'", conn);
  174. num = comm.ExecuteNonQuery();
  175. if (num > 0)
  176. {
  177. label4.Text += "已删除用户" + ckLBoxs.Items[i].ToString()+"\t";
  178. ckLBoxsRefresh();
  179. tbText.Text = "";
  180. }
  181. else
  182. {
  183. label4.Text = "用户不存在";
  184. }
  185. }
  186. }
  187. }
  188. /// <summary>
  189. /// 判断连接
  190. /// </summary>
  191. /// <returns></returns>
  192. private bool CkeckConn()
  193. {
  194. if (conn.State ==ConnectionState.Open)
  195. {
  196. return true;
  197. }
  198. else
  199. {
  200. return false;
  201. }
  202. }
  203. /// <summary>
  204. /// 列表更新
  205. /// </summary>
  206. private void ckLBoxsRefresh()
  207. {
  208. //判断连接状态
  209. if (!CkeckConn())
  210. {
  211. MessageBox.Show("请连接数据库");
  212. return;
  213. }
  214. comm = new MySqlCommand("select * from user", conn);
  215. dr = comm.ExecuteReader();
  216. ckLBoxs.Items.Clear();
  217. int num = 0;
  218. while (dr.Read())
  219. {
  220. ckLBoxs.Items.Add(dr.GetString(0));
  221. num++;
  222. }
  223. label4.Text = "";
  224. label4.Text = "已更新数据" + num.ToString() + "条。";
  225. dr.Close();
  226. }
  227. /// <summary>
  228. /// 退出
  229. /// </summary>
  230. /// <param name="sender"></param>
  231. /// <param name="e"></param>
  232. private void btn_Exit_Click(object sender, EventArgs e)
  233. {
  234. this.Close();
  235. }
  236. /// <summary>
  237. /// 关闭
  238. /// </summary>
  239. /// <param name="sender"></param>
  240. /// <param name="e"></param>
  241. private void frm_main_FormClosing(object sender, FormClosingEventArgs e)
  242. {
  243. if (conn !=null )
  244. {
  245. if (conn.State != ConnectionState.Closed)
  246. {
  247. conn.Close();
  248. }
  249. }
  250. if (dr !=null)
  251. {
  252. dr.Close();
  253. }
  254. }
  255. }
  256. }

 四、效果

        连接

        查询

        添加

        修改

        删除

C#连接mysql以及CRUD的实现就这样,如有什么问题或者交流可以留言或私信me。

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/486855
推荐阅读
相关标签
  

闽ICP备14008679号