2024年3月21日发(作者:)
本文由253154987贡献
doc1。
using System; using System.Collections.Generic; using System.Text; us
ing System.Data; using System.Data.SqlClient; /*SQLHelper:做为辅助层,系统
对数据库的所有操作都由该层完成 * 因为该层无法知道到底要操作那个表,那么我们
写出的对数据库的操作方法需要能 * 适用于任何一张表,任何一种操作,能适用于不
同的操作方式如:SQL 语句,存储过程 * */ namespace SQLHelper { /// /// Dat
aAccess 类专门用来访问数据库,能执行对各种表按照各种方式执行各种数据操 作,
/// 主要是实现数据的增/删/改/查询的操作,以下也是对应这四个功能的方法 ///
public class DataAccess { /// /// 得到命令对象的方法 /// ///
命令要执行的文本,可以是 sql 语句,也可以是存储 过程名称 ///
指定是按 sql 语句还是存储过程执行 ///
文本所要带的参数 /// <returns>返回一个命令对象的实例</returns> public
static SqlCommand GetCmd(string cmdText,CommandType cmdType,params SqlPar
ameter[] sps) { try { SqlCommand cmd = new SqlCommand(cmdText); cmd.Comman
dType = cmdType; if (null != sps) { foreach (SqlParameter var in sps) { cm
d.Parameters.Add(var); } }
return cmd; } catch (Exception ex) { throw ex; } } /// /// 主要用来实
现对数据的增/删/改功能,一般用做对 sql 语句或存储过程方式实现 /// 可以一次
性执行多个 sql 语句,但是最好是只执行一条或者一个存储过程 /// ///
命令要执行的文本 ///
命令的类型 ///
命令对象的参数 /// <returns>返回所影响的行数</returns> public static
int ExcuteDataNonQuery(string sqlText,CommandType cmdType,params SqlParame
ter[] spas) { try { using (SqlConnection conn = DBCon.GetCon()) { SqlComma
nd cmd = GetCmd(sqlText, cmdType, spas); cmd.Connection = conn; return cmd
.ExecuteNonQuery(); } } catch (Exception ex) { throw ex; } } /// /// 主要
用来实现对一个包含了增/删/改数据的表的同时修改。 当我们需要进行批量 数据操
作 /// 的时候使用,需要使用 DataSet 对象 /// ///
对表的所有列的查询语句 ///
表名
///
保存修改数据表的数据集合 public static void ExcuteDataSet(string sqlT
ext,string tableName,DataSet ds) { try { using (SqlConnection conn = DBCon
.GetCon()) { SqlDataAdapter sda = new SqlDataAdapter(sqlText,conn); SqlCom
mandBuilder scbd = new SqlCommandBuilder(sda); sda.Update(ds, tableName);
} } catch (Exception ex) { throw ex; } } /// /// 该方法用来实现对某个特殊
的数据的查询,比如最大值,最小值,行数或者满 足条件的 /// 一个值查询,一般
把值返回为一个字符串,或者 object /// ///
命令要执行的文本 ///
命令的类型 ///
命令对象的参数 /// <returns></returns> public static string ExcuteDat
aScalary(string sqlText, CommandType cmdType, params SqlParameter[] spas)
{ try { using (SqlConnection conn = DBCon.GetCon()) { SqlCommand cmd = Get
Cmd(sqlText, cmdType, spas); cmd.Connection = conn; if (null == cmd.Execut
eScalar()) throw new Exception("没有要查询的数据"); else return cmd.Execut
eScalar().ToString();
} } catch (Exception ex) { throw ex; } } /// /// 执行对记录的查询,或
者说满足条件的行集合的数据查询,一般应用在快速查 询,在 /// 三层结构中一般
用来生成实体类对象。因为 SqlDataReader 每次只能读一条记 录,而每一 /// 条记
录对应一个实体类对象 /// ///
命令要执行的文本 ///
page 1
命令的类型 ///
命令对象的参数 /// <returns>返回一个 SqlDataReader 对象</returns> pub
lic static SqlDataReader ExcuteDataReader(string sqlText, CommandType cmdT
ype, params SqlParameter[] spas) { try { SqlConnection conn = DBCon.GetCon
(); SqlCommand cmd = GetCmd(sqlText, cmdType, spas); cmd.Connection = conn
; //CommandBehavior 参数表示,当我们读完 sdr 对象后如果关闭 sdr 会 自动的关
闭连接对象 SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConn
ection); if (sdr.HasRows) return sdr; else throw new Exception("没有要查询
的数据"); } catch (Exception ex) { throw ex; } }
/// /// 用来做表数据的查询,在三层中采用 DataSet 做数据载体使用。在实
体类做载 体的时候 /// 一般用在具有联合查询功能的查询模块或者当 ComboBox 需
要绑定数据源的时 候 /// ///
要执行的命令文本 ///
表的名称 ///
命令对象的参数集合 /// <returns>返回要查询的结果集 DataSet</returns>
public static DataSet QueryDataSet(string sqlText,string tableName,Command
Type cmdtype, params SqlParameter[] sps) { try { DataSet ds = new DataSet(
); using (SqlConnection conn = DBCon.GetCon()) { SqlDataAdapter sda = new
SqlDataAdapter(sqlText, conn); sda.SelectCommand.CommandType = cmdtype; if
(null != sps) { foreach (SqlParameter var in sps) { sda.SelectCommand.Par
ameters.Add(var); } } sda.Fill(ds, tableName); return ds; } } catch (Excep
tion ex) { throw ex; } } }
}
我有,sql,和 access 的,你给我邮箱我发个给你,具体做法说不清,你得上
网 查查相关资料,一般知道怎么用就行,想要进一步扩展就需要对这些操作类比较
熟悉了解了! 提问人的追问 2009-12-09 09:08
我搜了很多资料,但还是不会用,实在太菜了,我的邮箱:vexfj@qq.com 提问
人的追问 2009-12-09 09:22
收到了,但不知道怎样使用呀,能说一下详细的用法吗?主要是 access 的,谢
谢。 团队的补充 2009-12-09 09:40
具体也说不清,首先,你得在 webconfig 里配置下数据库的路径 <connection
Strings> <remove name="LocalSqlServer"/> </connectionStrings> 然后再 acce
sshelp 类里配置下数据库连接串 public static readonly string conn = System.
Configuration.ConfigurationManager.ConnectionStrings["LocalSql LocalSql Se
rver"].ConnectionString; Server 粗体的是要一致的,可以自己定义名字。 然后就
是写操作方法,如对表的增删改查之类的,我发个对留言操作的类给你看 看,具体用
法 using System; using System.Collections.Generic; using System.Web; using
System.Data; using System.Data.OleDb; /// ///留言操作类 /// public clas
s Access_Liuyan {
private const string ACC_SELECT_ALL = "select * from liuyan order by
id desc"; private const string ACC_INSERT = "insert into liuyan (title,nam
e,sex,email,qq,content,addate) values(@title,@name,@sex,@email,@qq,@conten
t,@addate)"; private const string ACC_Delete = "delete from liuyan where i
d=@id"; private const string Parames_id = "@id"; private const string Para
mes_title = "@title"; private const string Parames_name = "@name"; private
const string Parames_sex = "@sex"; private const string Parames_email = "
@email"; private const string Parames_qq = "@qq"; private const string Par
ames_content = "@content"; private const string Parames_addate = "@addate"
; /// /// 读取全部留言 /// /// <returns></returns> public List<Model_Liu
yan> ReadAll() { List<Model_Liuyan> items = new List<Model_Liuyan>(); usin
g (OleDbDataReader rdr = AccessHelper.ExecuteReader(AccessHelper.conn,ACC_
SELECT_ALL,null)) { while(rdr.Read()) { Model_Liuyan item = new Model_Liuy
page 2


发布评论