改版的WinForm用户登陆
App.config中配置字文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="getConn" connectionString="data source=凡斌-VAIO; initial catalog=sales; integrated security=true"/>
</connectionStrings>
</configuration>
Form1.cs的页,双击buttion1进入
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
namespace 用户登陆
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static void ExecuteNonQuery(string sql)
{
Connection.GetConnection(); //获取连接数据库字符串
using (SqlConnection conn = new SqlConnection(Connection.GetConnection()))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Connection.GetConnection(); //调用自定义方法,连接数据库
using (SqlConnection conn = new SqlConnection(Connection.GetConnection()))//创建sql server连接对象conn
{
conn.Open(); //打开连接
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_users where userName=@NM";
cmd.Parameters.Add(new SqlParameter("NM", txtUserName.Text)); //避免SQL注入漏洞攻击
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
string pas=dr.GetString(dr.GetOrdinal("Password"));// 获取密码
if (Convert.ToInt32(dr.GetInt32(dr.GetOrdinal("Errortimes"))) > 3)//如果错误次数大于3次,提示错误次数过多。
{
label3.Text = "错误次数过多,请稍后再试";
return;
}
if (pas.ToString()==txtPassword.Text)
{
label3.Text = "登陆成功";
ExecuteNonQuery("update T_users set Errortimes=0");
}
else
{
label3.Text = "密码错误";
ExecuteNonQuery("update T_users set Errortimes=Errortimes+1");
}
}
else
{
label3.Text = "用户名错误";
}
}
}
}
}
}
class Connection //获取App.config文件里的数据库连接字符串
{
public static string GetConnection()
{
string getConn = ConfigurationManager.ConnectionStrings["getConn"].ConnectionString;
return getConn;
}
}
}