EmployeeUI窗体:
EmployeeInfo[] empInfo;
private void Form1_Load(object sender, EventArgs e)
{
ShowAllRecords();
}private void ShowAllRecords()
{
this.Cursor = Cursors.WaitCursor;
EmployeeDB emp = new EmployeeDB();
empInfo = emp.GetAllEmployee();
int recPos = this.BindingContext[empInfo].Position;
if (empInfo != null)
{
txtEmployeeId.Text = empInfo[recPos].EmployeeId.ToString();
txtFirstName.Text = empInfo[recPos].FirstName;
txtLastName.Text = empInfo[recPos].LastName;
}EmployeeDAL类库下的EmployeeDB类:
public EmployeeInfo[] GetAllEmployee()
{
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetAllEmployee"; ArrayList arrEmp = new ArrayList();
try
{
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
EmployeeInfo emp;
if (dr.HasRows)
{
while (dr.Read())
{
emp = new EmployeeInfo((int)dr["EmployeeId"], (string)dr["FirstName"], (string)dr["LastName"]);
arrEmp.Add(emp);
}
}
else
arrEmp = null;
dr.Close();
conn.Close();
return (EmployeeInfo[])arrEmp.ToArray(typeof(EmployeeInfo));
}EmployeeModel类库下的EmployeeInfo类:
public class EmployeeInfo
{
public EmployeeInfo()
{
//构造函数
} private int employeeId;
private string firstName;
private string lastName; public int EmployeeId
{
get{return employeeId;}
set{employeeId = value;}
} public string FirstName
{
get{return firstName;}
set{firstName = value;}
} public string LastName
{
get{return lastName;}
set{lastName = value;}
} public EmployeeInfo(int employeeId, string firstName, string lastName)
{
this.employeeId = employeeId;
this.firstName = firstName;
this.lastName = lastName;
}
}
原本只想部分代码上来的,怕有人叫我发完整的上来或者怕部分不理解,所以发多了少少,其实这代码不算,懂得的人一看就明白。
我在群里问过几个人,意见不一致的,所以上来看看大家是怎么说的,希望大家帮帮我。问题1:Model层,即是实体层,多定义一个带参数的构造函数,像这样的构造函数有什么作用或目的?(我见有不少案例都是这样的)
问题2:public EmployeeInfo[] GetAllEmployee()中的EmployeeInfo[]是一个类返回类型吧,有什么作用?
问题3:emp = new EmployeeInfo((int)dr["EmployeeId"], (string)dr["FirstName"], (string)dr["LastName"]);解释一下这一条代码,最好说一下那三个字段是怎么传递和保存的?
问题4:ShowAllRecords()方法里的empInfo=emp.GetAllEmployee(),当函执行到这里时,empInfo保存了什么值?你的回答不仅帮到我,可能也帮到很多路过这里的新手们,如果分不够再加分。
解决方案 »
- access insert into问题
- 正则表达式如何写[/表情1]jdf[/表情2]jdfl转为<img src=face/1.gif>jdf<img src=face/2.gif>jdfl
- asp.net下,执行ORACLE里的写好的SQL脚本
- 如何制作可对文字进行编辑的Textbox?
- ajax问题
- 为什么三层结构中不能添加用户控件
- 关于使用Visual Studio.net调试的问题
- asp.net怎么声明几个TextBox为数组,这样通过下标用循环访问就方便多了?
- 页面框架调用的问题。
- 关于排版问题,求助!
- texbox 如何在输入6位后,进入一个函数
- 如何通过IP获得访问机所在地址
EmployeeInfo employeeInfo=new EmployeeInfo(1,"Smith","David");这样就直接给EmployeeInfo 的EmployeeId FirstName LastName三个属性赋值了,就不用
employeeInfo.EmployeeId=1 这样赋值了问题2:public EmployeeInfo[] GetAllEmployee()中的EmployeeInfo[]是一个类返回类型吧,有什么作用? 返回EmployeeInfo一个集合,是EmployeeInfo类型的数组,可以直接绑定到GridView的DataSource
Gridview.DataSource=GetAllEmployee();
Gridview.DataBind();
问题3:emp = new EmployeeInfo((int)dr["EmployeeId"], (string)dr["FirstName"], (string)dr["LastName"]);解释一下这一条代码,最好说一下那三个字段是怎么传递和保存的?这个问题1差不多,调用了EmployeeInfo带参数的构造函数,将dr的值赋值给一个EmployeeInfo类型的对象
问题4:ShowAllRecords()方法里的empInfo=emp.GetAllEmployee(),当函执行到这里时,empInfo保存了什么值? empInfo是EmployeeInfo对象的一个集合,也就是刚才从数据库提取到Employee表的数据补充:这里实体相当于数据库表的一个映射
一般 UI引用BLL、Model层;Bll引用DAL、Model层;DAL层引用Model层。
1、首先UI层,引用了Model,就可以访问EmployeeInfo类中的方法、属性;还引用BLl层。一般不引用DAL层,
所以楼主的 引用欠妥。
2、其次UI层通过引用BLL层,通过逻辑BLL层来访问DAL层,其实BLl层和DAL层方法返回的
都是Model层的EmployeeInfo类型
3、通过DAL层,给Model层EmployeeInfo类的属性赋值,其他层就可访问到属性值。
返回对象方便实现数据绑定。
问题3:通过传值给给类属性赋值,保存在内存里。
问题4 对empInfo进行实例化,得到相关属性。
2问题 EmployeeInfo[] 其实相当于一个数组,主要是用在数据查询的一般不会对里面的数据进行变动。
这里你也可以返回一个列表,即List<EmployeeInfo>,它与上面EmployeeInfo[]的分别主要是用列表的话对列表中的数据进行修改或删除等数据操作
程序上效率会比EmployeeInfo[]好。