请问前辈:这属于三层吗?
用三层做了一个留言板,包括:标题,内容
数据库结构
id title Information
UI层代码
private void Button1_Click(object sender, System.EventArgs e)
{
Business.BusinessInfo bi=new BusinessInfo();
bi.InsertData(this.txtTitle.Text,this.txtMessage.Text);
this.lblMessage.Text="成功!";
}
==========================================
Data层代码
public class DataAccessInfo
{
SqlConnection con=null;
SqlCommand com=null;
public DataAccessInfo()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private void CreateObj()
{
con=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectString"]);
com=new SqlCommand();
com.Connection=con;
}
public void InsertInfo(string title,string information)
{
CreateObj();
com.CommandType=CommandType.Text;
com.CommandText="INSERT INTO Info(title,Information) VALUES ('"+title+"','"+information+"')";
try
{
con.Open();
com.ExecuteNonQuery();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
}
=================================
business层
public void InsertData(string title,string information)
{
DataAccess.DataAccessInfo dai=new DataAccessInfo();
dai.InsertInfo(title,information);
}
请问前辈,这是三层吗?
假如我要求对留言的标题作一些条件约束,是不是把代码加在business层中?
问题点数:50、回复次数:36Top
1 楼caobin518(linlin)回复于 2006-09-19 13:38:22 得分 0
谢谢前辈们Top
2 楼jc15271149(奶皮儿)回复于 2006-09-19 13:49:26 得分 20
1 是三层
2 加在business层Top
3 楼wisdom521()回复于 2006-09-19 13:58:59 得分 0
3层结构 最好把业务逻辑层和数据访问层 作为DLL组件Top
4 楼caobin518(linlin)回复于 2006-09-19 13:59:32 得分 0
如果按我这么做,
business层和Data层特别大.(dll特别大)
我看到一些书上讲道,应该尽可能使UI层和Data层中的Dll小.使business层中的dll大.
Top
5 楼jingye721(我不是弱者≮我メ他妈的谁欺负我,我全拿小本记着!≯)回复于 2006-09-19 14:05:02 得分 0
数据访问个人感觉就是那些不变的东西,business层主要看你的业务逻辑是否复杂,复杂就大点,有的就是起个直接调用过渡的作用,看需求,不一定Top
6 楼myminimouse(坚决不用baidu)回复于 2006-09-19 14:15:21 得分 0
业务层感觉总没什么可大的Top
7 楼sunjiancn(狗蛋)回复于 2006-09-19 14:29:30 得分 0
业务层看你的项目的复杂程度了Top
8 楼antiking(生活就象拉大便有时顺畅有时不顺畅.)回复于 2006-09-19 14:31:43 得分 20
public void InsertInfo(string title,string information)
{
CreateObj();
com.CommandType=CommandType.Text;
com.CommandText="INSERT INTO Info(title,Information) VALUES ('"+title+"','"+information+"')";
try
{
con.Open();
com.ExecuteNonQuery();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
}
这么写合适么????数据层里放sql语句!Top
9 楼AskerX(问问)回复于 2006-09-19 14:59:43 得分 0
形式上像3层,但是感觉你还不太了解分层的理念是什么,尤其是数据持久层......Top
10 楼IamRobert(罗伯特)回复于 2006-09-19 15:27:17 得分 0
楼上的……
这个概念虽然N久了,但是能完全剖析的人不多……
数据层中应该不能出现固定的sql语句。
Top
11 楼caobin518(linlin)回复于 2006-09-19 16:32:58 得分 0
antiking(Q狼E行-吹雪留香一点红,孤城寻欢花满楼)
谢谢你的回复..
请问
public void InsertInfo(string title,string information)
{
CreateObj();
com.CommandType=CommandType.Text;
com.CommandText="INSERT INTO Info(title,Information) VALUES ('"+title+"','"+information+"')";
try
{
con.Open();
com.ExecuteNonQuery();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
}
这么写合适么????数据层里
=========================
请问这段代码要放在哪里呢????Top
12 楼jingye721(我不是弱者≮我メ他妈的谁欺负我,我全拿小本记着!≯)回复于 2006-09-19 16:38:55 得分 0
可以连接数据库,写在存储过程里啊!Top
13 楼xingyaohua(邢跃华)回复于 2006-09-19 16:44:19 得分 0
形似,但你没理解了三层精髓(神)Top
14 楼caobin518(linlin)回复于 2006-09-19 17:06:16 得分 0
请下面的老大们把我这个实例改一下..改成正规的三层...........
刚才我查了一下资料.数据层中的确不能存在sqlTop
15 楼net205(人不可以无耻到这种地步)回复于 2006-09-19 21:35:42 得分 0
Mark.Top
16 楼lizheng__114(浪淘沙)回复于 2006-09-19 21:45:43 得分 0
多看看框架的知识吧,你的和petshop很相近,但是petshop比较适合小的项目,如果项目大点的话那整个项目就会想的十分臃肿,建议多看看Castle/ibatenet Hibernate NHibernate npetshop以及设计模式的东西把,会受益非浅的Top
17 楼gezichong(鸽子虫)回复于 2006-09-19 21:51:21 得分 0
过会儿再来Top
18 楼song0320(九纹龙)回复于 2006-09-19 22:26:51 得分 0
你可以在数据层写一个生成数据库语句的类,BU层跟据需要去调用产生SQL然后执行Top
19 楼dahroswell(da)回复于 2006-09-19 22:38:53 得分 0
是三层,是最简单的三层吧!Dal层可以很少,这就要考虑面向对象的一些设计模式了!Top
20 楼renmasheshou(狼狗)回复于 2006-09-19 22:51:37 得分 0
可以算三层了~Top
21 楼zhuciqiong(阿朱)回复于 2006-09-19 23:02:30 得分 0
建议数据层放在SP中,通过接口来访问数据.
我觉得数据+数据关系+访问接口组成数据层
而业务逻辑层是完全脱离数据层
望指教.Top
22 楼kubbye(小蛤蟆就是我)回复于 2006-09-19 23:28:54 得分 0
yesTop
23 楼jacky_gaoying(碧海长吟)回复于 2006-09-19 23:34:57 得分 10
这么改就比较合适了,其实参数还可以传数组,这样就可执行多个SQL语句,本人不建议将数据层放在存储过程中,因为放在存储过程中,可移值性不高,如果有一天换数据库,比如SQL Server换DB2,就等死吧
public void InsertInfo(string strSQL)
{
CreateObj();
com.CommandType=CommandType.Text;
com.CommandText=strSQL;
try
{
con.Open();
com.ExecuteNonQuery();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
}
Top
24 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-09-20 09:53:41 得分 0
看看petshopTop
25 楼petshop4(世界上有10种人,一种懂得什么是二进制 ,一种不懂)回复于 2006-09-20 10:15:35 得分 0
看看我就是了
才发现自己的名字挺好~~
PS:朋友给的号Top
26 楼longxin123(龙的心)回复于 2006-09-20 10:32:18 得分 0
╭═══╮ ╭═══╮ ╭══════╮
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮
║ ║ ║ ║ ║ ║ ╰╮╰╮
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ╭╯╭╯
║ ║ ║ ║ ║ ╰══╯╭╯
║ ║ ║ ║ ║ ╭═══╯
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
╰╮╰╮ ╭╯╭╯ ║ ║
╰╮╰═╯╭╯ ╭╯ ╰╮
╰═══╯ ╰═══╯
Top
27 楼john_huang(追梦者)回复于 2006-09-20 10:37:36 得分 0
╭═══╮ ╭═══╮ ╭══════╮
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮
║ ║ ║ ║ ║ ║ ╰╮╰╮
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ╭╯╭╯
║ ║ ║ ║ ║ ╰══╯╭╯
║ ║ ║ ║ ║ ╭═══╯
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
╰╮╰╮ ╭╯╭╯ ║ ║
╰╮╰═╯╭╯ ╭╯ ╰╮
╰═══╯ ╰═══╯Top
28 楼jz630(姜喆)回复于 2006-09-20 10:40:39 得分 0
╭═══╮ ╭═══╮ ╭══════╮
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮
║ ║ ║ ║ ║ ║ ╰╮╰╮
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ╭╯╭╯
║ ║ ║ ║ ║ ╰══╯╭╯
║ ║ ║ ║ ║ ╭═══╯
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
╰╮╰╮ ╭╯╭╯ ║ ║
╰╮╰═╯╭╯ ╭╯ ╰╮
╰═══╯ ╰═══╯
Top
29 楼ZJQ100()回复于 2006-09-20 10:47:47 得分 0
是Top
30 楼sic_hcq()回复于 2006-09-20 11:04:57 得分 0
三层,我也是学习中。。。Top
31 楼dreamwaters()回复于 2006-09-20 11:18:36 得分 0
学习ing..........Top
32 楼myminimouse(坚决不用baidu)回复于 2006-09-20 11:19:14 得分 0
看这个吧
http://www.cnblogs.com/lovecherry/archive/2006/07/02/440840.htmlTop
33 楼vb_vs(我是一只紧张的小星星^_^)回复于 2006-09-20 11:38:59 得分 0
假如我要求对留言的标题作一些条件约束,是不是把代码加在business层中?
=================================
我一般是放在UI中的,最好直接用JS在页面上约束,,,这样减轻服务器压力
望指导~~~~~~~
至于N-Tier,,
我的一般就是 3层
dataaccess -- busniess -- UI
至于设计模式方面,还在研究中,,,
望指导,,,,Top
34 楼wangwei155()回复于 2006-09-20 11:59:03 得分 0
╭═══╮ ╭═══╮ ╭══════╮
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮
║ ║ ║ ║ ║ ║ ╰╮╰╮
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ╭╯╭╯
║ ║ ║ ║ ║ ╰══╯╭╯
║ ║ ║ ║ ║ ╭═══╯
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║
╰╮╰╮ ╭╯╭╯ ║ ║
╰╮╰═╯╭╯ ╭╯ ╰╮
╰═══╯ ╰═══╯
Top
35 楼sstgaps()回复于 2006-09-20 12:03:58 得分 0
感觉busniess是多余的,目的就是为了减慢速度Top
36 楼sorrow_man(不会我就问,零下一度)回复于 2006-09-20 13:13:49 得分 0
学习Top




