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

标签: github winform 优化 技术 开源
9480人阅读 评论(0) 收藏 举报
分类:

前言

最近见习,要完成的一个作业。主要是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开发一样的思想,后面将会更新更多功能。

查看评论

c#windowform连接数据库的两种方法

一、 纯操作实现 第一步:数据库操作 1、打开SqlServer2005的企业管理器,如果当前运行的不是local服务器,则将其删除,接着新建SqlServer注册,添加local,实现注...
  • kevin_IoT
  • kevin_IoT
  • 2015-12-14 13:14:52
  • 4292

WinForm程序如何连接SQL数据库

用Visual Studio 2008写的WinForm程序与SQL数据库连接方法: 1、右击该WinForm程序所在项目—>添加—>新建项—>选“应用程序配置文件”—>确定,此时可以看到项目中多了...
  • wl912145616912145616
  • wl912145616912145616
  • 2011-08-15 18:49:00
  • 1831

WinForm中使用配置文件连接数据库

在WinForm中使用配置文件连接Oracle数据库:建立应用程序配置文件:App.config xml version="1.0" encoding="utf-8" ?>configuration>...
  • czhrf
  • czhrf
  • 2006-12-14 10:55:00
  • 2149

winform连接数据库,可数据增删改查

  • 2014年12月08日 20:02
  • 290KB
  • 下载

C#WinForm连接本地或远程Sql数据库,并进行简单操作。

在学习C#课程时,看到课本有相关内容的介绍。想起如果自己能做一个操作数据库的小软件应该不错。 所需要的知识基础就是sql的一些语句和C#的ADO.NET。 主要就是Connection、Comma...
  • hsk_scnu
  • hsk_scnu
  • 2016-06-10 19:28:35
  • 9571

C#winform快速访问MYSQL数据库

这里介绍下比较简单的方式,引用MySql.Data.dll然后添加一个MySqlHelper类来对MySql数据库进行访问和操作。   1.将MySql.Data.dll引用到你的项目中 ...
  • qq_2856571872
  • qq_2856571872
  • 2015-05-18 10:58:26
  • 3261

C#winform直接连接SQL数据库mdf文件

1.首先mdf文件必须是SQLServer2008及以下数据库,最好是2005版本的数据库 2.将mdf文件这里以数据库文件“Test.mdf”为例,放于与程序Bin文件夹同文件夹下 3.在Pro...
  • pp_fzp
  • pp_fzp
  • 2016-06-04 14:35:48
  • 2167

Winform连接数据库并实现用户登录

首先介绍一下SqlConnection类 SqlConnection类表示一个到SQL Server数据库的打开的连接,此类不能被继承 SqlConnection类的构造函数有如下3个 SqlC...
  • mylovestart
  • mylovestart
  • 2012-12-26 18:23:43
  • 15903

Winform连接SQL数据库并实现用户登录

Winform连接数据库并实现用户登录 首先介绍一下SqlConnection类 SqlConnection类表示一个到SQL Server数据库的打开的连接,此类不能被继承 SqlConnect...
  • m1654399928
  • m1654399928
  • 2013-08-09 10:02:21
  • 4463

C#与SQLServer数据库连接

第一种连接数据库方法:直接通过数据库的用户名、密码等连接 步骤: (1)建立SqlConnection对象,指定SqlConnection对象的ConnectionString属性; (2)打开...
  • june905206961
  • june905206961
  • 2016-08-02 13:51:04
  • 10149
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 30万+
    积分: 4331
    排名: 8698
    联系方式

    博文主要参考网上资料,视频笔记,结合个人见解,仅供学习、交流使用,如有侵权,请联系博主删除。


    博客专栏
    最新评论