有Windows窗体实现一个小小的能注册的登陆界面 要代码 高手给代码
解决方案 »
- 至少一个参数没有被指定值
- C#写winform程序,绘图如何绘制到控件的上面?
- wpf上传图片到文件夹
- 大家帮我看个小问题
- c#实现透明窗体
- 海思剪切板:alt+1~9复制,ctrl+1~9粘贴,当手工复制了之后,代码怎么实现ctrl+1~9粘贴这个动作?
- c#中List问题(在线等待)
- ====广州项目外包:有谁使用过MagicWinMail邮件服务器结合.Net开发过OA系统!急!=====
- .Net Winform 中使用水晶报表问题
- 關於winform中datagridview第一行無法隱藏的小技巧
- 关于使用委托在新开的线程中改变原窗体控件属性的问题
- 如何限制某些ip对单个页面的访问频率?程序常因某IP访问频率高而繁忙。。。
protected void btnRegister_Click(object sender, ImageClickEventArgs e)
{
User user = new User();
user.LoginId = this.txtLoginId.Text;
user.LoginPwd = this.txtLoginPwd.Text;
user.Name = this.txtName.Text;
user.QQ = this.txtQQ.Text;
user.Mail = this.txtEmail.Text; if (!UserManager.Register(user))//调用BLL方法添加用户信息,实现注册
{
this.ltMain.Text = "<script>alert('用户名已使用!请重新选择!')</script>";
}
else
{
this.ltMain.Text = "<script>alert('注册成功!欢迎您!');window.location='default.aspx'</script>";
} }
//登录方法
protected void imgbtnLogin_Click(object sender, ImageClickEventArgs e)
{
User user;
if (UserManager.Login(this.txtLoginId.Text, this.txtLoginPwd.Text, out user))//调用BLL方法,查询用户名和密码时候正确
{
this.pnlLogin.Visible = false;
Session["CurrentUser"] = user;
lblMessage.Text = user.Name.ToString() + "欢迎您!";
this.pnLogin.Visible = true;
Response.Redirect("~/UserDefault.aspx");
}
else
{
Response.Write("<script>alert('用户名或密码不正确,请重新填写')</script>");
}
}
BLL层///<summary>
/// 注册新用户
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public static bool Register(User user)
{
if (LoginIdExists(user.LoginId))
{
return false;
}
else
{
AddUser(user);
return true;
}
}
/// <summary>
/// 登录
/// </summary>
/// <param name="loginId">登录名</param>
/// <param name="loginPwd">登录密码</param>
/// <param name="validUser">输出用户</param>
/// <returns></returns>
public static bool Login(string loginId, string loginPwd, out User validUser)
{
User user = UserService.GetUserByLoginId(loginId);
if (user == null)
{
//用户名不存在
validUser = null;
return false;
}
if (user.LoginPwd == loginPwd)
{
validUser = user;
return true;
}
else
{
//密码错误
validUser = null;
return false;
}
}
DAL层: /// <summary>
/// 添加新用户
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public static User AddUser(User user)
{
string sql =
"INSERT Users (LoginId, LoginPwd, Name, QQ, Mail)" +
"VALUES (@LoginId, @LoginPwd, @Name, @QQ, @Mail)"; sql += " ; SELECT @@IDENTITY";
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@LoginId", user.LoginId),
new SqlParameter("@LoginPwd", user.LoginPwd),
new SqlParameter("@Name", user.Name),
new SqlParameter("@QQ", user.QQ),
new SqlParameter("@Mail", user.Mail)
}; int newId = DBHelper.GetScalar(sql, para);
return GetUserById(newId);
}/// <summary>
/// 通过登录名获得用户
/// </summary>
/// <param name="loginId"></param>
/// <returns></returns>
public static User GetUserByLoginId(string loginId)
{
string sql = "SELECT * FROM Users WHERE LoginId = @loginId";
SqlDataReader reader = DBHelper.GetReader(sql, new SqlParameter("@LoginId", loginId));
if (reader.Read())
{
User user = new User(); user.Id = (int)reader["Id"];
user.LoginId = (string)reader["LoginId"];
user.LoginPwd = (string)reader["LoginPwd"];
user.Name = (string)reader["Name"];
user.QQ = (string)reader["QQ"];
user.Mail = (string)reader["Mail"]; reader.Close(); return user;
}
else
{
reader.Close();
return null;
}
}
其他的自己去写了
FrLogon frlogon = new FrLogon();
DialogResult result = frlogon.ShowDialog();
if (result == DialogResult.OK)
{
Application.Run(new FormMain());
}
无语 asp.net 和 winform相差很多么?
就是前台改下就OK了 唉...
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void btnLogin_Click(object sender, EventArgs e)
{
SqlConnection yy = new SqlConnection(); //数据库连接
yy.ConnectionString = "server=.;database=logins;uid=sa;pwd=sa"; //设定连接字符串
yy.Open(); //打开连接
SqlCommand nn = new SqlCommand(); //数据库命令,sql
nn.Connection = yy;
nn.CommandText = "select * from users where UserName = @name"; //sql语句,用于取得name指定的一行
nn.Parameters.Add(new SqlParameter("@name", txtUser.Text)); //设定name条件为txtUser得值
SqlDataReader rr = nn.ExecuteReader(); //执行sql语句 ExecuteReader
if (rr.Read()) //读取纪录
{
if (rr[2].ToString() == txtPwd.Text) //如果密码正确
{
Form2 ff = new Form2();
ff.Show();
}
else //密码错误
{
MessageBox.Show("密码错误,请重新输入!");
txtPwd.Text = "";
}
}
else //没有记录,用户名不存在
{
MessageBox.Show("用户名不存在!请重新输入!");
txtUser.Text = "";
txtPwd.Text = "";
} } private void btnRegister_Click(object sender, EventArgs e)
{
string connString = "server=.;database=logins;uid=sa;pwd=sa"; //设定连接字符串
SqlConnection conn = new SqlConnection(connString); //数据库连接
string sql = "insert into users values('" + txtUser.Text + "','" + txtPwd.Text + "')";//设定sql语句
// "insert into users values(" + txtUser.Text + "," + txtPwd.Text + ")";
SqlCommand cmd = new SqlCommand(sql, conn); //数据库命令,sql
conn.Open();//打开连接 if (cmd.ExecuteNonQuery() > 0) //有纪录,保存成功,执行sql语句 ExecuteNonQuery
{
MessageBox.Show("保存成功!");
txtUser.Text = "";
txtPwd.Text = "";
}
else //没有记录,保存失败
{
MessageBox.Show("保存失败!");
txtUser.Text = "";
txtPwd.Text = "";
}
}
}
} 在看不懂也没办法了...
/// 添加新用户
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public static User AddUser(User user)
{
string sql =
"INSERT Users (LoginId, LoginPwd, Name, QQ, Mail)" +
"VALUES (@LoginId, @LoginPwd, @Name, @QQ, @Mail)"; sql += " ; SELECT @@IDENTITY";
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@LoginId", user.LoginId),
new SqlParameter("@LoginPwd", user.LoginPwd),
new SqlParameter("@Name", user.Name),
new SqlParameter("@QQ", user.QQ),
new SqlParameter("@Mail", user.Mail)
};
int newId = DBHelper.GetScalar(sql, para);
return GetUserById(newId);
}看了很多资料里的理论,
这个DAL层里的方法“添加用户”参数是 BLL层里的user类,这样做是不是违背了“弱耦合思想”和“下层不知道上层”?