如何从3层的sqldatareader获取一行? [英] How to get a row from sqldatareader in 3-tier?
本文介绍了如何从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屋!
查看全文