WinForm(C#)第一篇:登录页面实现+SQL Server数据库连接方式

来源:互联网 发布:淘宝保证金管理在哪里 编辑:程序博客网 时间:2024/06/03 21:24

  • 前言
  • 开发环境
  • 登录页面前台页面
  • 登录页面后台验证
  • 成功页面
  • 数据库连接核心代码
  • 数据库表结构及记录
  • 登录测试
    • 成功
    • 失败

前言

最近见习,要完成的一个作业。主要是WinForm(C#)开发,本想参考网上的Demo,但一直没找到合适入门的,因此打算自己记录一下整个开发过程,给予队友和后面学习的人一些方便。

当然,我也是第一次学习WinForm,技术不够成熟,代码也可能不够优化,希望大神多指教。

代码会开源在GitHub:https://github.com/YEN-GitHub/MES_SimpleDemo,可随时fork/download,我会尽量注释完善,一起共勉。


开发环境

本系列都是一下开发环境,后面的文章不在重复。
系统:Windows 10 家庭版
IDE:Visual studio 2015 Enterprise
数据库:SQL SERVER 2012
GitHub Desktop:3.3.4.0


登录页面前台页面

这里写图片描述


登录页面后台验证

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;namespace MES_SimpleDemo{    public partial class Login : Form    {        public Login()        {            InitializeComponent();        }        /**登录验证*/        private void button1_Click(object sender, EventArgs e)        {            //获取文本框中的值            string username = this.textBox1.Text;            string password = this.textBox2.Text;            if(username.Equals("") || password.Equals(""))//用户名或密码为空            {                MessageBox.Show("用户名或密码不能为空");            }            else//用户名或密码不为空            {                //到数据库中验证                string selectSql = "select * from tb_user where username='"+username+"' and password='"+password+"'";                SqlHelp sqlHelper = new SqlHelp();                int count = sqlHelper.SqlServerRecordCount(selectSql);//返回符合的结果数量                if (count > 0)//如果信息>0则说明匹配成功                {                    MessageBox.Show("信息验证成功");                    //将当前登录日志信息写入数据库(待开发...)                    //跳转到主页面                    Main view = new Main();//创建一个新页面                    view.Show();//显示新页面                    this.Hide();//隐藏当前页面                }                else                {                    MessageBox.Show("用户名或密码错误");                }            }        }        /**输入框重置*/        private void button2_Click(object sender, EventArgs e)        {            this.textBox1.Text = "";            this.textBox2.Text = "";        }    }}

成功页面

这里写图片描述


数据库连接核心代码

using System;using System.Data;using System.Configuration;using System.Text.RegularExpressions;using System.Data.SqlClient;using System.IO;using System.Net.Mail;using System.Text;/// <summary>///主要包括sqlHelp数据库访问助手类 和常用的一些函数定义///</summary>///SqlHelp数据库访问助手///1.public static void OpenConn()                                  //打开数据库连接///2.public static void CloseConn()                                 //关闭数据库连接///3.public static SqlDataReader getDataReaderValue(string sql)     //读取数据///4.public DataSet GetDataSetValue(string sql, string tableName)   //返回DataSet///5.public DataView GetDataViewValue(string sql)                   //返回DataView///6.public DataTable GetDataTableValue(string sql)                 //返回DataTable///7.public void ExecuteNonQuery(string sql)                        //执行一个SQL操作:添加、删除、更新操作///8.public int ExecuteNonQueryCount(string sql)                    //执行一个SQL操作:添加、删除、更新操作,返回受影响的行///9.public static object ExecuteScalar(string sql)                 //执行一条返回第一条记录第一列的SqlCommand命令///10.public int SqlServerRecordCount(string sql)                   //返回记录数///常用函数///1.public static bool IsNumber(string a)                          //判断是否为数字///2.public static string GetSafeValue(string value)                //过滤非法字符namespace MES_SimpleDemo{    class SqlHelp    {        ///私有属性:数据库连接字符串        ///Data Source=(Local)          服务器地址        ///Initial Catalog=SimpleMESDB  数据库名称        ///User ID=sa                   数据库用户名        ///Password=admin123456         数据库密码        private const string connectionString = "Data Source=(Local);Pooling=False;Max Pool Size = 1024;Initial Catalog=SimpleMESDB;Persist Security Info=True;User ID=sa;Password=admin123456";        /// <summary>        /// sqlHelp 的摘要说明:数据库访问助手类        /// sqlHelper是从DAAB中提出的一个类,在这里进行了简化,DAAB是微软Enterprise Library的一部分,该库包含了大量大型应用程序        /// 开发需要使用的库类。        /// </summary>        public SqlHelp()        {            //无参构造函数        }        public static SqlConnection conn;        //打开数据库连接        public static void OpenConn()        {            string SqlCon = connectionString;//数据库连接字符串            conn = new SqlConnection(SqlCon);            if (conn.State.ToString().ToLower() == "open")            {            }            else            {                conn.Open();            }        }        //关闭数据库连接        public static void CloseConn()        {            if (conn.State.ToString().ToLower() == "open")            {                //连接打开时                conn.Close();                conn.Dispose();            }        }        // 读取数据        public static SqlDataReader GetDataReaderValue(string sql)        {            OpenConn();            SqlCommand cmd = new SqlCommand(sql, conn);            SqlDataReader dr = cmd.ExecuteReader();            CloseConn();            return dr;        }        // 返回DataSet        public DataSet GetDataSetValue(string sql, string tableName)        {            OpenConn();            SqlDataAdapter da;            DataSet ds = new DataSet();            da = new SqlDataAdapter(sql, conn);            da.Fill(ds, tableName);            CloseConn();            return ds;        }        //  返回DataView        public DataView GetDataViewValue(string sql)        {            OpenConn();            SqlDataAdapter da;            DataSet ds = new DataSet();            da = new SqlDataAdapter(sql, conn);            da.Fill(ds, "temp");            CloseConn();            return ds.Tables[0].DefaultView;        }        // 返回DataTable        public DataTable GetDataTableValue(string sql)        {            OpenConn();            DataTable dt = new DataTable();            SqlDataAdapter da = new SqlDataAdapter(sql, conn);            da.Fill(dt);            CloseConn();            return dt;        }        // 执行一个SQL操作:添加、删除、更新操作        public void ExecuteNonQuery(string sql)        {            OpenConn();            SqlCommand cmd;            cmd = new SqlCommand(sql, conn);            cmd.ExecuteNonQuery();            cmd.Dispose();            CloseConn();        }        // 执行一个SQL操作:添加、删除、更新操作,返回受影响的行        public int ExecuteNonQueryCount(string sql)        {            OpenConn();            SqlCommand cmd;            cmd = new SqlCommand(sql, conn);            int value = cmd.ExecuteNonQuery();            return value;        }        //执行一条返回第一条记录第一列的SqlCommand命令        public object ExecuteScalar(string sql)        {            OpenConn();            SqlCommand cmd;            cmd = new SqlCommand(sql, conn);            object value = cmd.ExecuteScalar();            return value;        }        // 返回记录数        public int SqlServerRecordCount(string sql)        {            OpenConn();            SqlCommand cmd = new SqlCommand();            cmd.CommandText = sql;            cmd.Connection = conn;            SqlDataReader dr;            dr = cmd.ExecuteReader();            int RecordCount = 0;            while (dr.Read())            {                RecordCount = RecordCount + 1;            }            CloseConn();            return RecordCount;        }        ///<summary>        ///一些常用的函数        ///</summary>        //判断是否为数字        public static bool IsNumber(string a)        {            if (string.IsNullOrEmpty(a))                return false;            foreach (char c in a)            {                if (!char.IsDigit(c))                    return false;            }            return true;        }        // 过滤非法字符        public static string GetSafeValue(string value)        {            if (string.IsNullOrEmpty(value))                return string.Empty;            value = Regex.Replace(value, @";", string.Empty);            value = Regex.Replace(value, @"'", string.Empty);            value = Regex.Replace(value, @"&", string.Empty);            value = Regex.Replace(value, @"%20", string.Empty);            value = Regex.Replace(value, @"--", string.Empty);            value = Regex.Replace(value, @"==", string.Empty);            value = Regex.Replace(value, @"<", string.Empty);            value = Regex.Replace(value, @">", string.Empty);            value = Regex.Replace(value, @"%", string.Empty);            return value;        }    }}

数据库表结构及记录

这里写图片描述

这里写图片描述


登录测试

成功

这里写图片描述

失败

这里写图片描述


今天就先简单的登录页面,其实连上了数据库,之后的就跟Web开发一样的思想,后面将会更新更多功能。

2 0