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

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

前言

最近见习,要完成的一个作业。主要是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


登录页面前台页面

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


登录页面后台验证

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 = "";
        }
    }
}

成功页面

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


数据库连接核心代码

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;

/// 
///主要包括sqlHelp数据库访问助手类 和常用的一些函数定义
///
///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";



        /// 
        /// sqlHelp 的摘要说明:数据库访问助手类
        /// sqlHelper是从DAAB中提出的一个类,在这里进行了简化,DAAB是微软Enterprise Library的一部分,该库包含了大量大型应用程序
        /// 开发需要使用的库类。
        /// 


        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;
        }


        ///
        ///一些常用的函数
        ///

        //判断是否为数字
        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;
        }



    }
}

数据库表结构及记录

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

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


登录测试

成功

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

失败

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


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

你可能感兴趣的:(github,winform,优化,技术,开源)