首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

小弟我写的三层 朋友们帮看看有啥毛病没

2012-01-23 
我写的三层 朋友们帮看看有啥毛病没usingSystemusingSystem.DatausingSystem.ConfigurationusingSystem

我写的三层 朋友们帮看看有啥毛病没
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.Sql;
using   System.Data.SqlClient;

///   <summary>
///   Data   的摘要说明
///   </summary>
public   class   data
{
public   data()
{
                //构造函数
}

        public   string   connection()    
        {
                string   connstr;
                connstr   =   ConfigurationManager.AppSettings[ "databasestr "].ToString();
                return   connstr;
        }
        public   DataSet   proc_dataset(string   sqlstr)  
        {
                SqlConnection   conn   =   new   SqlConnection(connection());
                DataSet   dt   =   new   DataSet();
                try
                {            
                        SqlCommand   cmd   =   new   SqlCommand( "easyproc ",   conn);
                        cmd.CommandType   =   CommandType.StoredProcedure;
                        SqlParameter   para;
                        para   =   cmd.Parameters.Add( "@csql ",   SqlDbType.NVarChar,   3000);
                        cmd.Parameters[ "@csql "].Value   =   sqlstr;
                        para   =   cmd.Parameters.Add( "@total ",   SqlDbType.Int);
                        para.Direction   =   ParameterDirection.Output;
                        para   =   cmd.Parameters.Add( "@retime ",   SqlDbType.VarChar,   50);
                        para.Direction   =   ParameterDirection.Output;
                        SqlDataAdapter   ada   =   new   SqlDataAdapter(cmd);
                        ada.Fill(dt,   "dt ");
                        conn.Close();
                        conn.Dispose();
                }


                catch   (Exception   ex)
                {
                        conn.Close();
                        conn.Dispose();
                        HttpContext.Current.Response.Write( "提示:操作没有被完成,请保存错误截图并与管理员联系!错误号:PROC_DATASET+ "   +   sqlstr+ex.Message);
                        HttpContext.Current.Response.End();
                }
                return   dt;
        }


        public   void   proc_cmd(string   sqlstr)
        {
                SqlConnection   conn   =   new   SqlConnection(connection());
                try
                {
                        conn.Open();
                        SqlCommand   cmd   =   new   SqlCommand(sqlstr,   conn);
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        conn.Dispose();
                }
                catch   (Exception   ex)
                {
                        conn.Close();
                        conn.Dispose();
                        HttpContext.Current.Response.Write( "提示:操作没有被完成,请保存错误截图并与管理员联系!错误号:PROC_CMD+ "   +   sqlstr+ex.Message);
                        HttpContext.Current.Response.End();
                }
        }
        public   void   proc_notry_cmd(string   sqlstr)
        {
                SqlConnection   conn   =   new   SqlConnection(connection());
                conn.Open();
                SqlCommand   cmd   =   new   SqlCommand(sqlstr,   conn);
                cmd.ExecuteNonQuery();
                conn.Close();
                conn.Dispose();
        }


以上只是三层其中的一部分,对于conn的关闭和连接我写的不知道好不好   ,请朋友门给指点一下好么   [请给出解决代码]

*我看到过这个
if(objConn.State!=0){
        objConn.Close();


}
objConn.Disponse();     但不知道在哪使用,不知道对于我这个三层有没有用



[解决办法]
用USING块关闭,或TRY{}CATCH{}FINLLAY{}里显示关闭连接
你这个只能算是数据库操作类
HttpContext.Current.Response.Write( "提示:操作没有被完成,请保存错误截图并与管理员联系!错误号:PROC_CMD+ " + sqlstr+ex.Message);
这些是业务层的事情
建议看看PETSHOP
[解决办法]
关闭怎么放在catch里?为什么不放在finally里?
偶平时是放在finally里的!偶平时也是直接就conn.Dispose();
不知道你这写法好不好!交流一下。呵呵。
[解决办法]
MARK慢慢看
[解决办法]
1.
看不懂何谓三层

2.
推荐的一种方式

SqlConnection conn = new SqlConnection(connection());
conn.Open();
SqlCommand cmd = new SqlCommand(sqlstr, conn);
cmd.ExecuteNonQuery();
conn.Close();
conn.Dispose();

》》》

using(SqlConnection conn = new SqlConnection(connection())) {
conn.Open();
SqlCommand cmd = new SqlCommand(sqlstr, conn);
cmd.ExecuteNonQuery();
}

关于 using 语句的解释:
http://msdn2.microsoft.com/zh-cn/library/yh598w02(VS.80).aspx
[解决办法]
学习一下。
[解决办法]
其他的不说了,即然分层,数据访问层中就不应该向客户端写错误消息
[解决办法]
catch (Exception ex)
{
conn.Close();
conn.Dispose();
HttpContext.Current.Response.Write( "提示:操作没有被完成,请保存错误截图并与管理员联系!错误号:PROC_CMD+ " + sqlstr+ex.Message);
HttpContext.Current.Response.End();
}
出现异常才关闭,这段不对
[解决办法]
public string connection()
{
string connstr;
connstr = ConfigurationManager.AppSettings[ "databasestr "].ToString();
return connstr;
}

这里用函数好妈。。。。
还不如直接用ConfigurationManager.AppSettings[ "databasestr "].ToString();


[解决办法]
学习ing...
[解决办法]
顶先
学习
[解决办法]
catch(Exception ex)
{
throw ex;
}
或者写入日志记录中
[解决办法]
通过catch捕获呀,
建议google一些源码看看,
[解决办法]
数据访问层不应该向客户端输出错误信息,可以抛到表示层,或写到错误日志中。
[解决办法]
我写的数据操作
public void ExecuteProc(string ProcName, IDataParameter[] Paras)
{
SqlCommand cmd = new SqlCommand(ProcName, conn);
cmd.CommandType = CommandType.StoredProcedure;

if (Paras != null)
{
foreach (IDataParameter Para in Paras)
{
cmd.Parameters.Add(Para);
}
}

try
{
Open();
cmd.ExecuteNonQuery();
Close();
}
catch (Exception exp)


{
throw (new Exception( "执行存储过程错误: " + exp.Message));
}
finally
{
if (conn != null)
{
conn.Close();
conn.Dispose();
}
}
}
[解决办法]
话说豆豆早上起床时一头撞到床头柜上,不过没来得及感到疼他突然醒悟了...不能再这样继续了...

于是豆豆翻翻当天的报纸,找了家武校就去练武了...很快他发现这武校教的都是些基础...皮毛功夫不能改变命运啊...怎么办?

没想到今天运气这么好,一出门就碰到一个老叫花子...老叫花子一见豆豆两眼放光:“我看你骨骼精奇,乃是天生的练武奇才,这本《三层》拿去练...以后警恶惩奸维护世界和平这个任务就交给你了...”

今天...你打豆豆了没...
[解决办法]
关注!
[解决办法]
学习

[解决办法]
ding
[解决办法]
数据访问层中的Sql语句或者存储过程传的不太好

例如数据访问里,要有个SqlHelper,这里面全是数据连接的方法
然后SqlHelper上面(并非业务逻辑),是具体的数据访问类,这个类里面去调用SqlHelper的方法

建议看看MS写的SqlHelper,2000多行,听说能适应所有的项目,吓死我了~~~~
[解决办法]
看不出层次来,数据层和业务层混在一起 呢
[解决办法]
有人知道这是三层吗?
除了CATCH外...

因为我毕业设计就是类似的方法,但都说不是三层!
[解决办法]
路过帮顶!
[解决办法]
还是看看PETSHOP吧,对你有帮助
[解决办法]
顶了再说
[解决办法]
mark
[解决办法]
看了看你的这个方法,有两个参数要返回,你怎么只有一个返回去了
public int proc_returnid(string sqlstr)

你这个也不是三层结构,建议还是不要分层,熟练了以后再去学三层你会有完全不同的理解

[解决办法]
话说豆豆早上起床时一头撞到床头柜上,不过没来得及感到疼他突然醒悟了...不能再这样继续了...

于是豆豆翻翻当天的报纸,找了家武校就去练武了...很快他发现这武校教的都是些基础...皮毛功夫不能改变命运啊...怎么办?

没想到今天运气这么好,一出门就碰到一个老叫花子...老叫花子一见豆豆两眼放光:“我看你骨骼精奇,乃是天生的练武奇才,这本《三层》拿去练...以后警恶惩奸维护世界和平这个任务就交给你了...”

今天...你打豆豆了没...
**********************************************************

[解决办法]
学习
[解决办法]
最好有缓存和事务处理,可以参考微软的SqlHelper。
[解决办法]
抛异常是IV的强项
[解决办法]
close放在finally里
[解决办法]
数据层和业务层混在一起 ..

热点排行