怎么写sqlhelper( 二 )


__________________________________________________
回复楼主:
按分层的原则,业务层上不应出现操作SQL等数据层的操作的 。
业务层只会调用一类对象的增删改查 排序等方法,而对象的增删改查的实现这是数据层的东西 。
如果在业务逻辑层中有SQL的操作,那么业务逻辑层对数据层就有依赖了,层次会不分明的 。
说白了,SqlHelper 提供了一些数据访问的一些常用方法的包装,方便数据层的开发 。
_________________________________________________________
回复楼主:
严格来说HQL不应出现在业务逻辑层的,
而为什么现实中挺多项目这样做呢?
首先为什么要分层,分层使得软件结构清晰,这样一来方便团体合作,二来方便软件的维护和再开发(书是怎么写的我不知道,这只是我的个人见解) 。
并不是一定要分层的 。
有时做不小项目也分层会很烦人的--写接口再去实现这样代码会比原来多的 。
再一个HQL 它本身不区分数据库的,项目已选定用Hibernate不打算换成别的实现了这样写也可以的,反正换数据库实现已经交给Hibernate了,这也只不过是改一下配置文件的问题
5.新手怎么增删改查sqlhelperusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL{ public class SQLHelper { private SqlConnection conn =null; private SqlCommand cmd = null; private SqlDataReader sdr = null; public SQLHelper() { string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; conn = new SqlConnection(connStr); } private SqlConnection GetConn() { if (conn.State==ConnectionState.Closed) { conn.Open(); } return conn; } ////// 执行不带参数的增删改查SQL语句或存储过程 ////// 不带参数的增删改查SQL语句或存储过程 /// 命令类型 /// public int ExecuteNonQuery(string cmdText,CommandType ct) { int res; using (cmd = new SqlCommand(cmdText, GetConn())) { cmd.CommandType = ct; res = cmd.ExecuteNonQuery(); } return res; } ////// 执行带参数的SQL增删改查或存储过程 ////// 参数的SQL增删改查或存储过程 /// 参数集合 /// 命令类型 /// public int ExecuteNonQuery(string cmdText,SqlParameter[] paras,CommandType ct) { int res; using (cmd = new SqlCommand(cmdText, GetConn())) { cmd.Parameters.AddRange(paras); cmd.CommandType = ct; res = cmd.ExecuteNonQuery(); } return res; } ////// 执行带参数的增删改SQL语句或存储过程 ////// 带参数的增删改SQL语句或存储过程 /// 命令类型 /// public DataTable ExecuteQuery(string cmdText,CommandType ct) { DataTable dt = new DataTable(); cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; } ////// 执行带参数的SQL查询语句 ////// 带参数的SQL查询语句 /// 参数集合 /// 执行类型 /// DataTable public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras,CommandType ct) { DataTable dt = new DataTable(); cmd = new SqlCommand(cmdText, GetConn()); cmd.Parameters.AddRange(paras); cmd.CommandType = ct; using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; } ////// ExecuteScalar--返回首行首列 ////// sql语句 /// 返回结果集的首行首列 public int GetRecordCount(string XSqlString) { string SCount; SqlCommand Cmd = new SqlCommand(XSqlString, GetConn()); SCount = Cmd.ExecuteScalar().ToString().Trim(); //返回结果集的首行首列,忽略其它 if (SCount == "") SCount = "0"; return Convert.ToInt32(SCount); }}} 。
【怎么写sqlhelper】