清明节在家休息了两天,突然发现不用面对电脑的日子是这么的美好.曾几何时我是多么希望一天二十四小时座在电脑前面,可是也就是时隔两三年,现在如果不是需要真的不想天天看电脑,时间长了不仅张了个机器脸,而且把自己本来强壮的身体也一点点地消耗怠尽.再也找不到当年的激情.
有时候也发愁要说不喜欢这个职业把,有时候也挺想有所作为,要说喜欢把它真的很熬人。不管了,即来者则安之,先把眼下的工作做好再说吧。
接着ASP.NET的学习,ADO.NET大大前天测试成功,现在将其转到三层架构中,测试实例,是一个用户管理模块,其中包含用户登录,那就先测试用户登录的实现。
三层架构中DAL是数据访问层,负责数据库连接和数据处理的。按照以前jsp经验应该把,数据库的连接和数据的处理分开,单独建立一个例如DButill的类,负责数据库的连接,但是一般这个DButill或者asp.net同学经常叫得SQLhelp都是用第三方或者官方写好的类库。不会用也没找到。干脆就将连接数据库和数据处理放在一个类中,具体实现如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace Login.DAL
{
public class UserDAO
{
public Login.Model.UserInfo SelectUser(String userName, String userPwd)
{
/*1、拼接连接字符串string strCon="Server=数据库服务器名(127.0.0.1);Integrated Security=SSPI(安全策略是否使用windows用户名登录);Database=mydatabase(数据库名);User ID=YangShuang;Password=123456;pooling=false(是否使用连接池)";
*2、创建Connection的一种数据库对象。SqlConnetion conn =new SqlConnection(strCon);
*3、打开连接conn.Open();
*4、拼接sql语句string strSql="select * from tb_AdminUser";
*5、创建Command对象SqlCommand cmd=new SqlCommand(strSql,conn);
*5.1、可能这种用的更多创建Command对象SqlCommand cmd=conn.CreateCommand()
*5.2、cmd对象接收sql语句,一般运用参数化查询如下所示:
*cmd.CommandText = "select * from T_Users where Uname=@UName and UPassword=@UPassword";
*cmd.Parameters.Add(new SqlParameter("UName", userName));
*cmd.Parameters.Add(new SqlParameter("UPassword", userPwd));
*6、创建数据读取DataReader对象接受数据库查询结果,SqlDataReader sdr=com.ExecuteReader();
*7、处理读取到的数据if(sdr.Read()){……}
*最后一定要关闭,如果使用using则不需手动关闭,具体实现见下面
*/
//创建model的一个实例对象user
Login.Model.UserInfo user=new Login.Model.UserInfo();
SqlConnection conn = new SqlConnection(@"Server=218.198.33.210/;Integrated Security=false;DataBase=DB_Zyyy;User ID=YangShuang;Password=123456;pooling=false");
conn.Open();
//创建与数据对话的SqlCommand对象cmd
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Users where Uname=@UName and UPassword=@UPassword";
cmd.Parameters.Add(new SqlParameter("UName", userName));
cmd.Parameters.Add(new SqlParameter("UPassword", userPwd));
//创建cmd查询返回的SqlDataReader对象Reader
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
//给user赋值
user.ID = reader.GetInt32(reader.GetOrdinal("Uid"));
user.UserName = reader.GetString(reader.GetOrdinal("Uname"));
user.UserPwd = reader.GetString(reader.GetOrdinal("Upassword"));
user.UserEmail = reader.GetString(reader.GetOrdinal("Uemail"));
return user;
}
else
{
return null;
}
}
}
}
}
}
这样就可以得到数据库中的数据并将其封装到model实例对象user中,将此对象返回给BLL层,进而返回给UI层,便完成了三层架构的一次应用。在UI层通过对返回对象的处理变可完成想要的处理逻辑,可能这个处理应该放到BLL层中,但是刚开始学就先这样处理,以后再考虑到底放到哪儿。现在基本完成想要实现的效果,明天再添加上对用户的增删改查,当然有一个问题出现,那就是类似于webform中的一些服务器控件怎么和数据库的数据进行邦定.这个问题解决后,一个基本的用户管理模块就可以基本成型.明天学习下sqlhelp的使用,和控件和数据的邦定.
加油吧,时间不多,JavaEE……