环境:Mysql 5.7.28 + VS2017
一、配置并测试Mysql数据库
1. 安装mysql
去mysql官网下载安装,可见安装教程
2. 在VS中添加引用
项目-->添加引用
选择“浏览”-->找到mysql安装文件夹中的MySql.Data.dll
3. 测试
添加 添加using MySql.Data.MySqlClient
using MySql.Data.MySqlClient; String connetStr = "server=localhost;port=3306;user=root;password=root; database=mydb;"; // server=127.0.0.1/localhost 代表本机,端口号port默认是3306可以不写 MySqlConnection conn = new MySqlConnection(connetStr); try { conn.Open();//建立连接,可能出现异常,使用try catch语句 Console.WriteLine("已经建立连接"); //在这里可以使用代码对数据库进行增删查改的操作 } catch (MySqlException ex) { Console.WriteLine(ex.Message);//有错则报出错误 } finally { conn.Close();//关闭通道 }
二、创建数据库
mysql> create table user( -> id int primary key, -> user varchar(50) not null, -> pass varchar(50) not null -> );
设置主键自增
mysql> alter table user modify id int auto_increment;
三、登陆与注册功能
// 登陆 private void button1_Click(object sender, EventArgs e) { String username, password; username = textBox1.Text; password = textBox2.Text; String connetStr = "server=localhost;port=3306;user=root;password=123456; database=login;"; MySqlConnection conn = new MySqlConnection(connetStr); conn.Open(); String sql = "select user,pass from user where user='" + username + "'and pass='" + password + "'";//SQL语句实现表数据的读取 MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader sqlDataReader = cmd.ExecuteReader(); if (sqlDataReader.HasRows) //如果能查到,说明该用户密码存在 { //MessageBox.Show("登陆成功"); closeflag = true; this.Close(); } else { MessageBox.Show("账号或密码错误或未注册"); } conn.Close(); } // 注册 private void button2_Click(object sender, EventArgs e) { String username, password; username = textBox1.Text; password = textBox2.Text; String connetStr = "server=localhost;port=3306;user=root;password=123456; database=login;"; MySqlConnection conn = new MySqlConnection(connetStr); conn.Open(); String sql = "INSERT INTO user(user,pass) VALUES('" + username + "','" + password + "')"; // 没有判断重复插入 MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.ExecuteNonQuery(); MessageBox.Show("注册成功"); conn.Close(); }
四、多窗口控制
简单点的:如何关闭一个窗口,同时打开另一个窗口?
在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,
它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被自动关闭了。因此要关闭的窗口不能用Application.Run创建。
如何使用Hide()(只是隐藏,其实进程还被占用着)之类或者Close()(这个操作会把所有窗体关闭,因为属于同一个线程)是达不到我们需要的效果的。
要在关闭一个窗口的同时打开另一个窗口,可以按如下做法:
先在第一个窗口声明一个公共的bool变量并赋值为true:
如public bool closeflag = true;
在program类里运行第二个窗口,主要代码:
Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Form1()); Form1 form1 = new Form1(); form1.ShowDialog(); if(form1.closeflag == true) { Application.Run(new Form2()); }
然后在Form1的关闭的相关控件(如按钮或什么的,就是要关闭这个窗口的控件) 将closeflag赋值为true,并调用this.close();关闭第一个窗口。
五、其他
如何设置密码框?
设置textBox的属性,将PasswordChar中写入*即可。
参考链接:
1. https://blog.csdn.net/i_CodeBoy/article/details/79274498
2. https://zhuanlan.zhihu.com/p/44828065
3. https://www.cnblogs.com/xuliangxing/p/5984638.html
4. https://zhuanlan.zhihu.com/p/28401873
5. https://blog.csdn.net/qq_41398808/article/details/79772653
6. https://blog.csdn.net/shouhouxiaomuwu/article/details/11943831