在练习使用三层架构:
在DAL层中需要使用SQL语句,去查询获取值,查询的条件就是UI层里的txtUserName.text.Trim()的值,如何获取?代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;namespace Login.DAL
{
    public class UserDAO
    {
        public Login.Model.UserInfo SelectUser(string userName ,string passWord)
        {
            using(SqlConnection conn = new SqlConnection(DbUtil.connString))
            {
                conn.Open();
                string tsqlstring="SELECT ID,UserName,PassWord,Email FROM Users WHERE UserName='"+LoginUI.LoginForm.txtUserName.Text.Trim()+"' AND PassWord='"+LoginUI.LoginForm.txtPassWord.Text+"' ";
                SqlCommand cmd = new SqlCommand(conn, tsqlstring);                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();                da.Fill(ds, "Users");                Login.Model.UserInfo uinfo = null;
                uinfo.IDM = ds.Tables[0].Rows[0][0].ToString();
                uinfo.UserNameM = ds.Tables[0].Rows[0][1].ToString();
                uinfo.PassWordM = ds.Tables[0].Rows[0][2].ToString();
                if (ds.Tables[0].Rows[0][3].ToString() != null) 
                {
                    uinfo.EmailM = ds.Tables[0].Rows[0][3].ToString();
                }
                return uinfo;             
            }        }
    }
}我知道这里面还有很多问题,希望各位朋友能指出教导。THX三层架构引用

解决方案 »

  1.   

    UI层中 调用SelectUser()这个方法
      

  2.   

    还想是UI调用DAL吧?难道我记错了?
      

  3.   

     string tsqlstring="SELECT ID,UserName,PassWord,Email FROM Users WHERE UserName='"+LoginUI.LoginForm.txtUserName.Text.Trim()+"' AND PassWord='"+LoginUI.LoginForm.txtPassWord.Text+"' ";
    ========
    1。方法传入的两个参数: string userName ,string passWord  代码里怎么不用?
    2。拼接SQL语句是大忌,参数化SQL才是正理
    3。Login.Model.UserInfo uinfo = new Login.Model.UserInfo uinfo(); 
      

  4.   

    public Login.Model.UserInfo SelectUser(string userName ,string passWord)
    string tsqlstring="SELECT ID,UserName,PassWord,Email FROM Users 
    WHERE UserName='"+userName +"' AND PassWord='"+passWord+"' ";在UI中var user = SelectUser(txtUserName.Text.Trim(),txtPassWord.Text);
      

  5.   

    DAL去访问UI,那你还分层干嘛。
      

  6.   

    把textbox的值,作为参数,传递到dal层
      

  7.   

    应该是要验证用户名和密码把  dal层中就写带参数的查询方法就行 
    比如dal层中 checkUser(string Username,string password)
    ui层中就直接调用就行dal.checkUser(txtUser.text.tostring,txtpassword.text.tostring)
      

  8.   

    三層架構UI、BLL、DAL.
    UI調用BLL
    BLL調用DALUI層代碼:
    using Business;
    using Model;
    protected void Login_Click(object sender,EventArgs e)
    {
    Business.User user=new Business.User();
    string userName=txtUserName.text.Trim();
    string password=txtPassword.text.Trim();
    Model.UserInfo userEntity=user.SelectUser(userName,password);
    }BLL層代碼:
    using Model;
    using DAL;
    public class user
    {
    private UserDAO userDao=new UserDAO();
    public UserInfo SelectUser(string userName ,string passWord)
    {
    return userDao.SelectUser(userName,password);
    }
    }
      

  9.   

    UI层里调用SelectUser()方法,txtUserName.text.Trim()用参数形式传过来