ADO.NET在三层架构中的测试实例

时间:2022-01-27 07:11:56

清明节在家休息了两天,突然发现不用面对电脑的日子是这么的美好.曾几何时我是多么希望一天二十四小时座在电脑前面,可是也就是时隔两三年,现在如果不是需要真的不想天天看电脑,时间长了不仅张了个机器脸,而且把自己本来强壮的身体也一点点地消耗怠尽.再也找不到当年的激情.

有时候也发愁要说不喜欢这个职业把,有时候也挺想有所作为,要说喜欢把它真的很熬人。不管了,即来者则安之,先把眼下的工作做好再说吧。

接着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……