您的位置:首页 > 数据库

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

2017-04-21 00:15 906 查看
前言

开发环境

登录页面前台页面

登录页面后台验证

成功页面

数据库连接核心代码

数据库表结构及记录

登录测试
成功

失败

前言

最近见习,要完成的一个作业。主要是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开发一样的思想,后面将会更新更多功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: