如何从3层的sqldatareader获取一行? [英] How to get a row from sqldatareader in 3-tier?

查看:76
本文介绍了如何从3层的sqldatareader获取一行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好

我遇到了问题。我想知道如何从3层的sqldatareader获取一行?

我的代码不运行。你能告诉我为什么不对吗?

这是我的代码:

DAL:

  public   static  SqlDataReader Clerk_Search( string  name,  string  family, string  melliCode)
{
SqlDataReader sqlDataReader;
SqlCommand comm = new SqlCommand( Clerk_Search ,Data_Access.conn);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.AddWithValue( @ clk_Name,name);
comm.Parameters.AddWithValue( @ clk_Family,family);
comm.Parameters.AddWithValue( @ clk_MeliCod,melliCode);
conn.Open();
sqlDataReader = comm.ExecuteReader();
conn.Close();
return sqlDataReader;


}



BL:



  static   public  System.Data.SqlClient.SqlDataReader Clerk_Search( string  name, string  family, string  meliCode)
{
System.Data.SqlClient.SqlDataReader sqlDataReader;
sqlDataReader = Data_Access.Clerk_Search(name,family,meliCode);
return sqlDataReader;


}





UI

< pre lang =c#> private void Clerk_Search_Click( object sender,EventArgs e)
{
// System.Data.SqlClient。 SqlDataReader sqlDataReader;


System.Data.SqlClient.SqlDataReader red;
red = Business.Clerk_Search(txtNameClerk.Text.Trim(),txtFamilyClerk.Text.Trim(),txtShomarehyeMeliClerk.Text.Trim());
txtClerkId.Text = red [ clk_Id]。ToString();

}

解决方案

 BL:
static public string Clerk_Search( string name, string family, string meliCode)
{
System.Data.SqlClient.SqlDataReader sqlDataReader;
sqlDataReader = Data_Access.Clerk_Search(name,family,meliCode);

// 你应该使用
// 这将读取一行
sqlDataReader.Read();

// 知道将数据分配给字符串例如

string str = sqlDataReader [ name< /跨度>]的ToString();
str + = + sqlDataReader [ family]。ToString();
str + = + sqlDataReader [ meliCode]。ToString();

// 并在UI处接收str并使用以下内容拆分字符串:并获取所需数据

return str;
}











 UI 
private void Clerk_Search_Click(< span class =code-keyword> object sender,EventArgs e)
{
// System.Data.SqlClient.SqlDataReader sqlDataReader;


System.Data.SqlClient.SqlDataReader red;
red = Business.Clerk_Search(txtNameClerk.Text.Trim(),txtFamilyClerk.Text.Trim(),txtShomarehyeMeliClerk.Text.Trim());

red.Read();

if (red.HasRow)
{

txtClerkId.Text = red [ clk_Id]。ToString();
}


Hi everyone
I've had a problem. I want to know how to get a row from sqldatareader in 3-tier?
My code don't run. Could you tell me Why it isn't correct ?
this is my code:
DAL:

public static SqlDataReader Clerk_Search(string name, string family, string melliCode)
        {
            SqlDataReader sqlDataReader;
            SqlCommand comm = new SqlCommand("Clerk_Search", Data_Access.conn);
            comm.CommandType = CommandType.StoredProcedure;
            comm.Parameters.AddWithValue("@clk_Name", name);
            comm.Parameters.AddWithValue("@clk_Family", family);
            comm.Parameters.AddWithValue("@clk_MeliCod", melliCode);
            conn.Open();
            sqlDataReader = comm.ExecuteReader();
            conn.Close();
            return sqlDataReader;


        }


BL:

static public System.Data.SqlClient.SqlDataReader   Clerk_Search(string name, string family, string meliCode)
       {
           System.Data.SqlClient.SqlDataReader sqlDataReader;
         sqlDataReader = Data_Access.Clerk_Search(name, family, meliCode);
         return sqlDataReader;


       }



UI

private void Clerk_Search_Click(object sender, EventArgs e)
        {
            //System.Data.SqlClient.SqlDataReader sqlDataReader;
           
           
                System.Data.SqlClient.SqlDataReader red;
                red = Business.Clerk_Search(txtNameClerk.Text.Trim(), txtFamilyClerk.Text.Trim(), txtShomarehyeMeliClerk.Text.Trim());
                txtClerkId.Text = red["clk_Id"].ToString();
          
        }

解决方案

BL:
static public string Clerk_Search(string name, string family, string meliCode)
{
System.Data.SqlClient.SqlDataReader sqlDataReader;
sqlDataReader = Data_Access.Clerk_Search(name, family, meliCode);

//you shoud read data here using 
//this will read one line 
sqlDataReader.Read();

//know assing data to string for example

string str=sqlDataReader["name"].ToString();
str+=":"+sqlDataReader["family"].ToString();
str+=":"+sqlDataReader["meliCode"].ToString();

//and recieve str at UI and split string with : and get required data

return str;
}




or in

UI
private void Clerk_Search_Click(object sender, EventArgs e)
{
//System.Data.SqlClient.SqlDataReader sqlDataReader;


System.Data.SqlClient.SqlDataReader red;
red = Business.Clerk_Search(txtNameClerk.Text.Trim(), txtFamilyClerk.Text.Trim(), txtShomarehyeMeliClerk.Text.Trim());

red.Read();

if(red.HasRow)
{

   txtClerkId.Text = red["clk_Id"].ToString(); 
}


这篇关于如何从3层的sqldatareader获取一行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆