咳咳,好久没写了,刚刚做完这次作业,之前有点忙。。。
这次其实就是Mysql与Winform连接,说实话,单纯是连接没有什么意思,于是我就干脆做了整个系统(算是大概上说得过去的半成品),包括什么密码认证啊,登陆啊,注册啊,什么对于数据库表的增删改查啊这些……
首先把,做点笔记,关于美化窗口的一些总结:
1.图标的设置:在属性中的外观中找到icon,选择一张图标文件,记得格式是.icon的。
2.关于背景图案的设置:在属性中有一个backgroundimage的属性,选择后浏览本地图片或者直接把图片导入到项目中(个人推荐导入到项目中)。
3.关于标签与背景颜色统一:
4.关于设置完图片后在拉伸过程中需要图片适应窗体大小,这时选择属性BackgroundLayout选择stretch就可以了。
5.拖动窗体时会出现窗体闪烁的情况,这时候在Form_load那里添加这样一行代码:
这就是关于美化窗体的一部分操作的总结,总之,只是最基本的一些,我做的很简单,所以也没有非常高级的美化手段。
接下来是正题,先上登录界面吧!
这个东西呢输入账号密码就行了,密码想要隐藏的话就在属性UseSystemPasswordChar属性中选择:true
输入的话效果就是这样而已:
登录进去后会提示:
登陆成功了,点击确定进入这个界面:
好吧,那个Regist按钮是一个进入注册账户的界面,其实这个设计比较不合理,但我觉得放在一开始的登录界面更加不科学,所以就丢这里了,管理员就可以注册嘛,我的理解就是这样的,各位请不要吐槽~
点击Show按钮出现:
数据库的资料就被调出来了,接下来我们试一下Select按钮,也就是查询了,按性别查询,比如:
当然,你也可以按照班级查询,比如查询信管1121:
你也可以按学号查询,按姓名查询等,就是基本功能了。
当然,插入修改这些也可以,比如插入一条信息:
咳咳,性别是秀吉,这是个梗,各位懂的,嘿嘿~
不对,他应该是个男的,好吧,修改性别:
成功,哎,这条记录好无聊,删了吧~
点击Regist按钮,打开注册账户的界面:
显示一下吧,所有的账户:
如果想添加一个账户和密码呢?
算了,不要第二个了,删了吧:
删除了~
试一下新用户的登陆吧:
成功!介绍完了,我们来看一下代码吧:
先介绍一下登陆界面的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace testmysql
{
public partial class login : Form
{
public login()
{
InitializeComponent();
label1.BackColor = Color.Transparent;
label2.BackColor = Color.Transparent;
label3.BackColor = Color.Transparent;
}
private void toUser_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string user = toUser.Text.ToString();
string pwd = toPass.Text.ToString();
if (user == "" )
{
MessageBox.Show("Please input user's name and password!");
}
else
{
// string sql = "select SYSUSER_UN,SYSUSER_PWD from list_class where SYSUSER_UN='" + toUser.Text + "'and SYSUSER_PWD='" + toPass.Text + "'";
//string sql = " select * from list_class ;";
MySqlConnection conn = new MySqlConnection("server=localhost;Persist Security Info=True;User id=root;database=homework;password=''");
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = " select * from Admin where UName='"+toUser.Text+"'and Password = '"+toPass.Text+"'";
cmd.Parameters.Add(new MySqlParameter("userID", toUser));
cmd.Parameters.Add(new MySqlParameter("PassWord",toPass));
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
MessageBox.Show("Login successfully!");
this.Hide();
Form1 form = new Form1();
form.ShowDialog();
this.Close();
}
else
{
MessageBox.Show("User's name or password is wrong,please try again!");
}
dr.Close();
conn.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void Login_Load(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
}
}
其实这么多东西,重点的就只有:
这一段呢,很明显MysqlConnection就是连接数据库的了,里面包括服务器,mysql的登陆名,密码等等一堆东西,coon.Open();就是打开数据库,这个才是真正的打开这个数据库的链接,接下来的MySqlCommand就是用于创建对象cmd去查找用户名和密码,最后呢再进行认证,认证用到MySqlDataReader类,创建的dr对象调用认证,认证通过的话就关闭掉我们的登录界面显示Form1界面,也就是database的界面,如果输入的用户名密码不正确,就提示你重新输入,这段代码非常实用,可以用于做登陆界面。
那么接下来就来说一下我们的主界面:
先上代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace testmysql
{
public partial class Form1 : Form
{
string sq = "";
public Form1()
{
InitializeComponent();
Id.BackColor = Color.Transparent;
Sno.BackColor = Color.Transparent;
Sname.BackColor = Color.Transparent;
Class.BackColor = Color.Transparent;
SSex.BackColor = Color.Transparent;
}
private void show_Click(object sender, EventArgs e)
{
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
//MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sq = "select * from list_class";
MySqlDataAdapter sda2 = new MySqlDataAdapter(sq, conn);
dataGridView1.DataSource = dt;
//sda.Fill(dt);
sda2.Fill(dt);
// dataGridView1.DataSource = dt;
conn.Close();
}
private void Add_Click(object sender, EventArgs e)
{
try
{
string Id = textBox5.Text;
string Sno = textBox1.Text;
string Sname = textBox2.Text;
string Class = textBox3.Text;
string Ssex = textBox4.Text;
sq = "insert into list_class values(" + Id + ",'" + Sno + "','" + Sname + "','" + Class + "','" + Ssex + "')";
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
}
catch { MessageBox.Show("error!"); }
}
private void Delete_Click(object sender, EventArgs e)
{
string Id = textBox5.Text;
sq = "delete from list_class where Id = '"+Id+"'";
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
}
private void Select_Click(object sender, EventArgs e)
{
try
{
string Sno = textBox1.Text;
string Id = textBox5.Text;
string Sname = textBox2.Text;
string Class = textBox3.Text;
string Ssex = textBox4.Text;
if (Sno != "")
{
sq = "select * from list_class where Sno='" + Sno + "'";
}
else if (Id != "")
{
sq = "select * from list_class where Id='" + Id + "'";
}
else if (Class != "")
{
sq = "select * from list_class where Class='" + Class + "'";
}
else if (Sname != "")
{
sq = "select * from list_class where Sname='" + Sname + "'";
}
else if (Ssex != "")
{
sq = "select * from list_class where Ssex='" + Ssex + "'";
}
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();
}
catch { MessageBox.Show("error!"); }
}
private void Update_Click(object sender, EventArgs e)
{
try
{
string Sno = textBox1.Text;
string Id = textBox5.Text;
string Sname = textBox2.Text;
string Class = textBox3.Text;
string Ssex = textBox4.Text;
if (Id != "")
{
if (Sname != "")
{
sq = "update list_class set Sname= '" + Sname + "' where Id = '" + Id + "'";
}
else if (Class != "")
{
sq = "update list_class set Class= '" + Class + "' where Id = '" + Id + "'";
}
else if (Ssex != "")
{
sq = "update list_class set Ssex= '" + Ssex + "' where Id = '" + Id + "'";
}
}
else if (Sno != "")
{
if (Sname != "")
{
sq = "update list_class set Sname= '" + Sname + "' where Sno = '" + Sno + "'";
}
else if (Class != "")
{
sq = "update list_class set Class= '" + Class + "' where Sno = '" + Sno + "'";
}
else if (Ssex != "")
{
sq = "update list_class set Ssex= '" + Ssex + "' where Sno = '" + Sno + "'";
}
}
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
}
catch { MessageBox.Show("Error!"); }
}
private void Form1_Load(object sender, EventArgs e)
{
//防止加载背景图案时窗口闪烁,同时需要把图片放于项目文件中
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true);
}
private void Regist_Click(object sender, EventArgs e)
{
Administator ad = new Administator();
ad.ShowDialog();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
其实就是增删改查的功能,连接数据库那块非常简单:
连接照样是MySqlConnection,然后是哪个字符串:服务器,数据库,账号,密码。由于我没有设密码所以我就把密码给省略了哈哈~
DataTable是一个表类,这个类用于填充整个dataGridView1,而MysqlDataAdapter类呢则是用于执行sql语句的,这样就可以操作数据库了~
最后要关闭,这是出于对数据库安全的考虑~
上面的很多代码都是关于增删改查的,我把sql语句存放在一个string对象sq中,通过sq来对数据库进行操作,其中关于更新,我只有用ID或者姓名来进行更新,这样比较能确保修改的是单条记录,而就用了if语句去进行判断是否在textBox有输入字符串,有的话就将字符串加上sql语句存放在sq中,最后在使用sq来对数据库进行操作,这就能实现了。
对了,还有那个注册的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace testmysql
{
public partial class Administator : Form
{
public Administator()
{
InitializeComponent();
UID.BackColor = Color.Transparent;
UName.BackColor = Color.Transparent;
Password.BackColor = Color.Transparent;
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
string sq = "";
private void Show_Click(object sender, EventArgs e)
{
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
DataTable dt = new DataTable();
sq = "select * from Admin";
MySqlDataAdapter sda2 = new MySqlDataAdapter(sq, conn);
dataGridView1.DataSource = dt;
sda2.Fill(dt);
conn.Close();
}
private void Add_Click(object sender, EventArgs e)
{
try
{
string UID = textBox3.Text;
string UName = textBox1.Text;
string Password = textBox2.Text;
sq = "insert into admin values(" + UID + ",'" + UName + "','" + Password + "')";
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
MessageBox.Show("Add successfully!");
}
catch { MessageBox.Show("error!"); }
}
private void Delete_Click(object sender, EventArgs e)
{
string UID = textBox3.Text;
sq = "delete from admin where UID = '" + UID + "'";
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
MessageBox.Show("Delete successfully!");
}
private void Update_Click(object sender, EventArgs e)
{
try
{
string UID = textBox3.Text;
string UName = textBox1.Text;
string Password = textBox2.Text;
if (UID != "")
{
if (UName != "")
{
sq = "update admin set UName= '" + UName + "' where UID = '" + UID + "'";
}
else if (Password != "")
{
sq = "update admin set Password= '" + Password + "' where UID = '" + UID + "'";
}
}
string constr = "server=localhost;database=homework;User id=root;";
MySqlConnection conn = new MySqlConnection(constr);
conn.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(sq, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
MessageBox.Show("Update successfully!");
}
catch { MessageBox.Show("Error!"); }
}
private void Administator_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true);
}
}
}
这个也是和From1一个道理的,所以在这里也就不多说了。
总之东西都是一样的,换汤不换药,算法才是本质,只要能运用算法,就算是我不会的c#也还是能勉强东拼西凑做出来的。
各位不要吐槽,我真的不会c#,都是查资料啊什么做出来的,耗时可能有二十几个小时,总之做这么水的一个东西还是求各位大神不要吐槽了,小弟甘拜下风!