一直都看些petshop的例子,看的晕呼呼的
希望大家 给个简单的说明,我下面有三段代码,请各位大哥帮我分下层吧
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["SqlServerStr"];
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
string sql = "insert into ipRe (ipContent) values ('" + userIP + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close(); string sql_city = "select * from tb_uAdvise ";
SqlCommand cmd_city = new SqlCommand(sql_city, conCity);
DataSet dsCity = new DataSet();
SqlDataAdapter sdrCity = new SqlDataAdapter(cmd_city);
sdrCity.Fill(dsCity, "tb_uAdvise");
this.GridView1.DataSource = dsCity;
this.GridView1.DataBind();
conCity.Close();
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["SqlServerStr"];
SqlConnection conn_show = new SqlConnection(ConnectionString);
string sql_show ="SELECT * FROM tb_produce where uAdviseID='"+ uAdviseID +"'";
conn_show.Open(); SqlCommand cmd_show = new SqlCommand(sql_show, conn_show);
SqlDataReader dr_show = cmd_show.ExecuteReader();
if (dr_show.Read())
{
this.lblproName.Text = dr_show["pName"].ToString();
}
conn_show.Close();很明显,一个是 操作数据库,一个是控件绑定数据,一个是读取数据, 希望哪个大哥费神帮我分下层,而且尽可能的 说明下,小弟谢谢了
希望大家 给个简单的说明,我下面有三段代码,请各位大哥帮我分下层吧
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["SqlServerStr"];
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
string sql = "insert into ipRe (ipContent) values ('" + userIP + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close(); string sql_city = "select * from tb_uAdvise ";
SqlCommand cmd_city = new SqlCommand(sql_city, conCity);
DataSet dsCity = new DataSet();
SqlDataAdapter sdrCity = new SqlDataAdapter(cmd_city);
sdrCity.Fill(dsCity, "tb_uAdvise");
this.GridView1.DataSource = dsCity;
this.GridView1.DataBind();
conCity.Close();
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["SqlServerStr"];
SqlConnection conn_show = new SqlConnection(ConnectionString);
string sql_show ="SELECT * FROM tb_produce where uAdviseID='"+ uAdviseID +"'";
conn_show.Open(); SqlCommand cmd_show = new SqlCommand(sql_show, conn_show);
SqlDataReader dr_show = cmd_show.ExecuteReader();
if (dr_show.Read())
{
this.lblproName.Text = dr_show["pName"].ToString();
}
conn_show.Close();很明显,一个是 操作数据库,一个是控件绑定数据,一个是读取数据, 希望哪个大哥费神帮我分下层,而且尽可能的 说明下,小弟谢谢了
email:
[email protected]
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
string sql = "insert into ipRe (ipContent) values ('" + userIP + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
---数据访问层,很明显的,和数据库打交道
string sql_city = "select * from tb_uAdvise ";
SqlCommand cmd_city = new SqlCommand(sql_city, conCity);
DataSet dsCity = new DataSet();
SqlDataAdapter sdrCity = new SqlDataAdapter(cmd_city);
sdrCity.Fill(dsCity, "tb_uAdvise");
--这也是数据访问的
this.GridView1.DataSource = dsCity;
this.GridView1.DataBind();
--这是画面绑定值的,是表示层
conCity.Close();
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["SqlServerStr"];
SqlConnection conn_show = new SqlConnection(ConnectionString);
string sql_show ="SELECT * FROM tb_produce where uAdviseID='"+ uAdviseID +"'";
conn_show.Open(); SqlCommand cmd_show = new SqlCommand(sql_show, conn_show);
SqlDataReader dr_show = cmd_show.ExecuteReader();
--数据访问
if (dr_show.Read())
{
this.lblproName.Text = dr_show["pName"].ToString();
--表示层 }
conn_show.Close();
你贴的代码不是三层的
三层的是
数据访问 类dao 方法select insert update delete
业务逻辑 类business 处理逻辑,调用dao的方法取数据,然后处理
表示层 web画面,调用business类的方法,得到按逻辑处理过的数据,显示在画面上
最好先把分层的一些意义和目的搞明白.
然后可以去下一些别人写的源码看看
51aspx上应该可以找到很多
数据层:里面的所有方法一类的东西都是操作数据库的
业务层:全是你做的项目的业务思路一类的东西,它跟数据层里的方法连接
UI层:就是你从业务层里调出方法,然后绑定到页面的控件上,然后显示出来就完了。
UI层就是你的页面,后台代码里用到的方法全是业务层的,它不跟数据层打交到,而业务层只跟数据层打交道,明白点没?
多使用,就行了,最多做两个项目就明了了,共同进步哈。共勉!
先打好基础。
参考
http://www.cnblogs.com/benbenkoala/archive/2008/05/29/1209658.html
http://www.cnblogs.com/cjw213052/archive/2008/10/03/1303623.html
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;/// <summary>
/// DataBase 的摘要说明
/// </summary>
public class DataBase
{
public DataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
} /// <summary>
/// 返回一个数据库连接
/// </summary>
/// <returns></returns>
private static SqlConnection ReturnConn()
{
string connstr = ConfigurationManager.ConnectionStrings["CustomerConnectionString"].ToString();
if (connstr.Length < 1)
{
return null;
}
SqlConnection Conn = new SqlConnection(connstr);
if (Conn.State.Equals(ConnectionState.Closed))
{
Conn.Open();
}
return Conn;
} /// <summary>
/// 构造一个SqlCommand对象,并返回此对象
/// </summary>
/// <param name="procName"></param>
/// <returns></returns>
private static SqlCommand ReturnCmd(string procName)
{
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.CommandText = procName;
return Cmd;
} /// <summary>
/// 方法重载,带参数的传递,返回一个SqlCommand对象
/// </summary>
/// <param name="procName"></param>
/// <param name="prams"></param>
/// <returns></returns>
private static SqlCommand ReturnCmd(string procName, SqlParameter[] prams)
{
SqlCommand Cmd = new SqlCommand();
Cmd.CommandText = procName;
Cmd.CommandType = CommandType.StoredProcedure;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
Cmd.Parameters.Add(parameter);
}
}
return Cmd;
} /// <summary>
/// 执行存储过程,不带参数,返回受影响的条数
/// </summary>
/// <param name="proName"></param>
/// <returns></returns>
public static int RunExecute(string proName)
{
SqlConnection Conn = ReturnConn();
SqlCommand Cmd = ReturnCmd(proName);
Cmd.Connection = Conn;
int intResult = Cmd.ExecuteNonQuery();
Conn.Close();
return intResult;
} /// <summary>
/// 重载函数,带参数,传入参数和存储过程,返回执行后的影响条数
/// </summary>
/// <param name="procName"></param>
/// <param name="prams"></param>
/// <returns></returns>
public static int RunExecute(string procName, SqlParameter[] prams)
{
SqlConnection Conn = ReturnConn();
SqlCommand Cmd = ReturnCmd(procName, prams);
Cmd.Connection = Conn;
int intResult = Cmd.ExecuteNonQuery();
Conn.Close();
return intResult;
} /// <summary>
/// 执行存储过程,并返回第一行第一列的值,返回object类型值
/// </summary>
/// <param name="procName"></param>
/// <returns></returns>
public static object RunExecuteScalar(string procName)
{
SqlConnection Conn = ReturnConn();
SqlCommand Cmd = ReturnCmd(procName);
Cmd.Connection = Conn;
object Result = Cmd.ExecuteScalar();
Conn.Close();
return Result;
} /// <summary>
/// 方法重载,返回一行一列的值,返回object类型值
/// </summary>
/// <param name="procName"></param>
/// <param name="prams"></param>
/// <returns></returns>
public static object RunExecuteScalar(string procName, SqlParameter[] prams)
{
SqlConnection Conn = ReturnConn();
SqlCommand Cmd = ReturnCmd(procName, prams);
Cmd.Connection = Conn;
object Result = Cmd.ExecuteScalar();
Conn.Close();
return Result;
} /// <summary>
/// 执行存储过程,返回一个DataSet数据集
/// </summary>
/// <param name="procName"></param>
/// <param name="mytable"></param>
/// <returns></returns>
public static DataSet RunProcGetDataSet(string procName,string mytable)
{
SqlConnection Conn = ReturnConn();
SqlDataAdapter Dtr = new SqlDataAdapter(procName, Conn);
Dtr.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet Ds = new DataSet();
Dtr.Fill(Ds,mytable);
Conn.Close();
return Ds;
} /// <summary>
/// 方法重载,执行带参数的存储过程,返回一个DataSet数据集
/// </summary>
/// <param name="procName"></param>
/// <param name="prams"></param>
/// <param name="mytable"></param>
/// <returns></returns>
public static DataSet RunProcGetDataSet(string procName, SqlParameter[] prams, string mytable)
{
SqlConnection Conn = ReturnConn();
SqlDataAdapter Dtr = new SqlDataAdapter(procName, Conn);
Dtr.SelectCommand.CommandType = CommandType.StoredProcedure;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
Dtr.SelectCommand.Parameters.Add(parameter);
}
}
DataSet Ds = new DataSet();
Dtr.Fill(Ds, mytable);
Conn.Close();
return Ds;
}
}
{
private int id; //教会ID public int Id
{
get { return id; }
set { id = value; }
}
private string name; //教会名称 public string Name
{
get { return name; }
set { name = value; }
}
private string addr; //教会地址 public string Addr
{
get { return addr; }
set { addr = value; }
}
private string presbyterid; //教会牧师 public string Presbyterid
{
get { return presbyterid; }
set { presbyterid = value; }
}
private string churchmanid; //教会长老 public string Churchmanid
{
get { return churchmanid; }
set { churchmanid = value; }
}
private string re; //备注 public string Re
{
get { return re; }
set { re = value; }
} /// <summary>
/// 获取传入的参数数据,添加教会信息
/// </summary>
/// <returns></returns>
public int saveChurch()
{
string procname = "pro_saveChurch";
SqlParameter[] prams = new SqlParameter[5];
prams[0] = new SqlParameter("@name", this.name);
prams[1] = new SqlParameter("@addr", this.addr);
prams[2] = new SqlParameter("@presbyterid", this.presbyterid);
prams[3] = new SqlParameter("@churchmanid", this.churchmanid);
prams[4] = new SqlParameter("@re", this.re); int intResult = CDataBaseU.RunExecute(procname, prams);
return intResult;
} /// <summary>
/// 修改一个教会信息
/// </summary>
/// <returns>返回一个int类型值</returns>
public int updateChurch()
{
string procname = "pro_upChurch";
SqlParameter[] prams = new SqlParameter[6];
prams[0] = new SqlParameter("@id", this.id);
prams[1] = new SqlParameter("@name", this.name);
prams[2] = new SqlParameter("@addr", this.addr);
prams[3] = new SqlParameter("@presbyterid", this.presbyterid);
prams[4] = new SqlParameter("@churchmanid", this.churchmanid);
prams[5] = new SqlParameter("@re", this.re);
int intResult = CDataBaseU.RunExecute(procname, prams);
return intResult;
} /// <summary>
/// 删除一个教会
/// </summary>
/// <returns>返回一个int类型值</returns>
public int delChurch()
{
string procname = "pro_delChurch";
SqlParameter[] prams = new SqlParameter[1];
prams[0] = new SqlParameter("@id", this.id);
int intResult = CDataBaseU.RunExecute(procname, prams);
return intResult;
} /// <summary>
/// 查找教会
/// </summary>
/// <returns></returns>
public DataTable SearchChurch()
{
string procname = "pro_SearchChurch"; //确定所要使用的存储过程
SqlParameter[] prams = new SqlParameter[1];
prams[0] = new SqlParameter("@name", this.name);
return CDataBaseU.RunProcGetTable(procname, prams);
}
/// <summary>
/// 根据传入的id查找教会信息
/// </summary>
/// <param name="_id"></param>
/// <returns></returns>
public DataTable GetChurchName(int _id)
{
string procname = "pro_GetChurchUser";
SqlParameter[] prams = new SqlParameter[1];
prams[0] = new SqlParameter("@Id",_id);
return CDataBaseU.RunProcGetTable(procname,prams);
}
}
{
Church chi = new Church();
chi.Id = Convert.ToInt32(this.txtID.Text.ToString().Trim());
chi.Name = this.txtCName.Text.Trim();
chi.Addr = this.txtCAddr.Text.Trim();
chi.Presbyterid = this.txtCP.Text.Trim();
chi.Churchmanid = this.txtCM.Text.Trim();
chi.Re = this.txtRe.Text.Trim();
try
{
int key=chi.updateChurch();
if (key != 0)
{
sys.Msg("修改成功!");
this.dgvJHXX.DataSource = DR();
}
else
{
sys.Msg("修改失败!");
}
}
catch (Exception ex)
{
sys.Msg(ex.ToString());
}
}注意:业务层中CDataBaseU应该是Database自己慢慢看吧,就是这样的架构。三层互不影响,一层层调用。
业务层:church.cs (向数据库类传递参数获取数据,然后返回给显示层,或者执行相关的操作)
显示层:updata.aspx(将获取到的资料显示出来)
还有http://www.maticsoft.com/
然后是派生自数据操作接口的数据访问层,在这里可以用多种数据库来实现
然后是工厂对象,根据配置文件指定的数据访问层(如操作access或操作T-sql的)通过反射创建数据访问对象
之后可到业务层对数据访问对象返回的数据进行业务处理
如果不需要处理,则可直接用Ilist<>集合绑定输出到表示层当然实现数据访问层的时候可以加入针对不同数据库的工具包方便操作,减少代码量用以上做法可以实现多种数据库语言的快速转换