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