}
///
/// 执行带参SQL语句并返回数据表 ///
/// /// ///
public static DataTable ExecuteDt(String Sqlstr, SqlParameter[] param) {
String ConnStr = SQLHelper.GetSqlConnection();
using (SqlConnection conn = new SqlConnection(ConnStr)) {
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand(Sqlstr, conn); cmd.Connection = conn;
cmd.Parameters.AddRange(param); da.SelectCommand = cmd; conn.Open(); da.Fill(dt); conn.Close(); return dt; } }
///
/// 批量执行带参SQL语句 ///
/// /// ///
public static Int32 ExecuteSqls(String[] Sqlstr, List
String ConnStr = SQLHelper.GetSqlConnection();
using (SqlConnection conn = new SqlConnection(ConnStr)) {
SqlCommand cmd = new SqlCommand(); SqlTransaction tran = null; cmd.Transaction = tran; try {
conn.Open();
tran = conn.BeginTransaction();
20
cmd.Connection = conn; cmd.Transaction = tran;
Int32 count = Sqlstr.Length;
for (Int32 i = 0; i < count; i++) {
cmd.CommandText = Sqlstr[i];
cmd.Parameters.AddRange(param[i]); cmd.ExecuteNonQuery(); }
tran.Commit(); return 1; } catch {
tran.Rollback(); return 0; }
finally {
cmd.Dispose(); conn.Close(); } } } }
11.编写类文件usersDAL.cs的内容
双击DAL项目中的usersDAL.cs文件,先在该文件的开始部分添加以下对所需命名空间的引用的代码:
using System.Data;
using System.Data.SqlClient; using DBHelper; using MODEL;
然后将自动生成的usersDAL类的访问修饰符改为public,在userDAL类中添加
GetUsersByNameAndPWD()方法,最后,类usersDAL的完整代码如下:
public class usersDAL {
///
/// 根据帐号和密码判断是否存在账户 ///
///
21
public int GetUsersByNameAndPWD(users objusers) {
StringBuilder sb = new StringBuilder();
sb.Append(\ sb.Append(\ SqlParameter[] param ={
SQLHelper.GetParameter(\
SQLHelper.GetParameter(\ };
DataTable table = SQLHelper.ExecuteDt(sb.ToString(), param); if (table.Rows.Count > 0) {
return 1; } else {
return 0; } } }
12.编写类文件usersBLL.cs的内容
双击BLL项目中的usersBLL.cs文件,先在该文件的开始部分添加以下对所需命名空间的引用的代码: using DAL; using MODEL;
然后将自动生成的usersBLL类的访问修饰符改为public,编写usersBLL类代码如下: namespace BLL {
public class usersBLL {
private static readonly usersDAL user = new usersDAL();
public int GetUsersByNameAndPWD(users objusers) {
return user.GetUsersByNameAndPWD(objusers); } } }
13.创建登录页面
右单击项目Web,打开快捷菜单,单击“添加”菜单项,再单击级联菜单中的“新建项”,打开“添加新项”对话框,默认选择“Web窗体”模板,在名称输入框中输入登录页面的名称“login.aspx”,
22
单击“添加”按钮,就此完成登录页面login.aspx的创建。按照图1-1所示的效果图,将用于用户名输入的TextBox取名为“TextBoxUsername”,用于密码输入的TextBox取名为“TextBoxPassword”,“登录”按钮取名为“ButtonLogin”,“注册”按钮取名为“ButtonRegister”。
图2-8 添加新项对话框
双击login.aspx.cs文件,在文件的开始部分,添加以下命名空间的引用:
using MODEL;
using BLL;
编写“ButtonLogin”按钮的Click事件代码,如下: protected void ButtonLogin_Click(object sender, EventArgs e) {
usersBLL objusersBLL = new usersBLL(); users objusers = new users();
objusers.UserName = TextBoxUsername.Text.Trim(); objusers.UserPwd = TextBoxPassword.Text.Trim();
int result = objusersBLL.GetUsersByNameAndPWD(objusers); if (result == 1) {
this.ClientScript.RegisterStartupScript(this.GetType(), \, \登录成
功!');\); } else {
this.ClientScript.RegisterStartupScript(this.GetType(), \, \登录失
败!');\); } }
14.调试与运行
右单击“login.cs”文件,在打开的快捷菜单中,选择“在浏览器中查看”菜单项,运行登录页
23
面,若有错,请按照编译器指出的错误的顺序逐个排错,依次解决各种错误问题。
四.实验题
在以上创建的ASP.NET网站“CSharpStudy”的基础上,添加一个新表“news”用于保存新闻记录,对login.aspx登录页面做必要修改后,然后继续通过引用项目的方式完成基于简单三层架构的“CSharpStudy”网站的其它功能页面,其它各页面的效果图如图1-7、1-8、1-9、1-10、1-11、1-12、1-13所示。大体上的功能详见实验1中关于功能的描述。
五.实验体会:
24