CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

通过ADO.NET访问SqlServer数据库的通用类,你是如何设计的?

楼主boyfling(GGS)2004-09-01 21:39:06 在 .NET技术 / C# 提问

痛苦于ADO.NET更新数据库时的复杂(因为不用CommandBuilder)。  
  通过ADO.NET访问SqlServer数据库的通用类,你是如何设计的?为什么这么设计?有什么好处? 问题点数:100、回复次数:20Top

1 楼sjzwinfor(蜘蛛侠)回复于 2004-09-01 22:06:16 得分 0

用组件类,方便,简单Top

2 楼windinwing(潇笑)回复于 2004-09-01 22:13:40 得分 20

用存储过程啊,这个写起来方便  
   
  internal   class   WSqlCommand   :   IDisposable  
  {  
  private   SqlCommand   m_SqlCmd     =   null;  
  private   string           m_connStr   =   "";  
   
  ///   <summary>  
  ///   默认构造方法.  
  ///   </summary>  
  ///   <param   name="connectionString">连接字符串.</param>  
  ///   <param   name="commandText">命令文本.</param>  
  public   WSqlCommand(string   connectionString,string   commandText)  
  {  
  m_connStr   =   connectionString;  
   
  m_SqlCmd   =   new   SqlCommand(commandText);  
  m_SqlCmd.CommandType         =   CommandType.StoredProcedure;  
  m_SqlCmd.CommandTimeout   =   180;  
  }  
   
  public   WSqlCommand(string   connectionString)  
  {  
  m_connStr   =   connectionString;  
   
  m_SqlCmd   =   new   SqlCommand();  
  m_SqlCmd.CommandType         =   CommandType.Text;  
  m_SqlCmd.CommandTimeout   =   180;  
  }  
   
  #region   function   Dispose  
   
  public   void   Dispose()  
  {  
  if(m_SqlCmd   !=   null)  
  {      
  m_SqlCmd.Dispose();  
  }  
  }  
   
  #endregion  
   
   
  #region   function   AddParameter  
   
  ///   <summary>  
  ///   添加SQL命令参数  
  ///   </summary>  
  ///   <param   name="name">参数   名称.</param>  
  ///   <param   name="dbType">参数   MSSQL数据类型</param>  
  ///   <param   name="value">参数   值</param>  
  public   void   AddParameter(string   name,SqlDbType   dbType,object   value)  
  {  
  SqlDbType   dbTyp   =   dbType;  
  object   val   =   value;  
   
  if(val   is   DateTime)  
  {  
  DateTime   date   =   (DateTime)value;  
  val   =   new   DateTime(date.Year,date.Month,date.Day,date.Hour,date.Minute,0,0);  
  }  
   
  if(dbType   ==   SqlDbType.UniqueIdentifier)  
  {  
  dbTyp   =   SqlDbType.NVarChar;  
  string   guid   =   val.ToString();  
  if(guid.Length   <   1)  
  {  
  return;  
  }  
  }  
   
  m_SqlCmd.Parameters.Add(name,dbTyp).Value   =   val;  
  }  
   
  #endregion  
   
  #region   fucntion   Execute  
   
  ///   <summary>  
  ///   执行命令.  
  ///   </summary>  
  ///   <returns>返回DataSet类型</returns>  
  public   DataSet   Execute()  
  {  
  DataSet   dsRetVal   =   null;  
   
  using(SqlConnection   con   =   new   SqlConnection(m_connStr))  
  {  
  con.Open();  
  m_SqlCmd.Connection   =   con;  
   
  dsRetVal   =   new   DataSet();  
  SqlDataAdapter   adapter   =   new   SqlDataAdapter(m_SqlCmd);  
  adapter.Fill(dsRetVal);  
   
  adapter.Dispose();  
  }  
   
  return   dsRetVal;  
  }  
  public   int   ExecuteNonQuery()  
  {  
  int   i=-1;  
  using(SqlConnection   con   =   new   SqlConnection(m_connStr))  
  {  
  con.Open();  
  m_SqlCmd.Connection   =   con;  
  i=m_SqlCmd.ExecuteNonQuery();  
  }  
  return   i;  
  }  
  #endregion  
   
   
  #region   Properties   Implementaion  
   
  ///   <summary>  
  ///   获取或设置命令超时时间.  
  ///   </summary>  
  public   int   CommandTimeout  
  {  
  get{   return   m_SqlCmd.CommandTimeout;   }  
   
  set{   m_SqlCmd.CommandTimeout   =   value;   }  
  }  
   
  ///   <summary>  
  ///   获取或设置命令类型.  
  ///   </summary>  
  public   CommandType   CommandType  
  {  
  get{   return   m_SqlCmd.CommandType;   }  
                       
  set{   m_SqlCmd.CommandType   =   value;   }  
  }  
                 
  public   string   CommandText  
  {  
  get{return   m_SqlCmd.CommandText;}  
  set{m_SqlCmd.CommandText=value;   }  
  }  
  #endregion  
   
  }Top

3 楼lxcc()回复于 2004-09-01 22:14:38 得分 10

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.aspTop

4 楼windinwing(潇笑)回复于 2004-09-01 22:15:58 得分 10

调用   
  public   DataView   GetUser(string   Account)  
  {  
  using(WSqlCommand   sqlCmd   =   new   WSqlCommand(m_ConStr,"disku_GetUser"))  
  {  
  sqlCmd.AddParameter("@Account"   ,SqlDbType.NVarChar,Account);  
  DataSet   ds   =   sqlCmd.Execute();  
  ds.Tables[0].TableName   =   "User";  
   
  return   ds.Tables["User"].DefaultView;  
  }  
  }  
   
   其实用法很多,这个是我常用的一个,调用方便,不用写一大堆参数  
  另外自动释放连接Top

5 楼lxcc()回复于 2004-09-01 22:16:20 得分 10

M$的Data   Access   Application   Block   for   .NETTop

6 楼cnming(cnming)回复于 2004-09-01 22:16:50 得分 10

我做了通用类,但是没有用起来,因为我感觉不大适用Top

7 楼zhpsam109(JACKY.昊昊)回复于 2004-09-01 22:19:14 得分 0

顶!Top

8 楼vniper(爱国不爱党!)回复于 2004-09-06 23:09:40 得分 0

want   moreTop

9 楼xiaopai20(小排——流浪狗)回复于 2004-09-06 23:33:17 得分 10

我用的也是这个  
  Data   Access   Application   Block   for   .NET  
  Top

10 楼boyfling(GGS)回复于 2004-09-07 20:29:12 得分 0

这个是Data   Access   Application   Block   for   .NET是什么哦?哪里找?Top

11 楼zl9732(zl9732)回复于 2004-09-17 00:08:05 得分 0

upTop

12 楼jeffandjeff(brood)回复于 2004-09-17 00:43:34 得分 0

上微软网站下载啊Top

13 楼fengqingyang1979(风轻扬)回复于 2004-09-17 08:41:04 得分 10

Data   Access   Application   Block   for   .NET到Google搜也应该能找到吧Top

14 楼Edifier0709(腦袋重構中.....)回复于 2004-09-17 08:44:41 得分 0

You   can   use   <<Data   Access   Application   Block   for   .NET>>Top

15 楼xiangzionest(祥子)回复于 2004-09-17 08:45:08 得分 0

Data   Access   Application   Block   for   .NET,你可以参考微软的,增加自己的一些东西Top

16 楼kuibobo(^踏雪无痕)回复于 2004-10-04 02:24:58 得分 0

能写的话自己弄一个,肯定学到不少东西Top

17 楼hivak47(比尔)回复于 2004-10-04 08:54:16 得分 10

我记得MSDN上面有,楼主可以找找看,好像是用存储过程来做的.Top

18 楼fengqingyang1979(风轻扬)回复于 2004-10-04 09:17:23 得分 0

研究一下微软的Data   Access   Application   Block   for   .NET,然后参考做一个适合自己用的。Top

19 楼cgq214(cgq214)回复于 2004-10-04 15:09:03 得分 0

orm怎么不考虑呢,开源的有nhibernate呢Top

20 楼veijerd(玮杰)回复于 2004-11-01 15:38:31 得分 10

Data   Access   Application   Block   for   .NETTop

相关问题

  • 数据库ado
  • 用ado管理access数据库时,有没有什么通用的方法得到数据库里的表名?谢谢!!
  • 如何判断ADO方式下SQLSERVER数据库连接成功?
  • 图片如何保存到数据库中sqlserver(ado来实现)
  • ado远程登陆通过Internet连接sqlServer数据库
  • ADO远程网络SQLServer数据库访问之IP问题
  • 急!!!ADO连接SQLServer数据库时遇到的奇怪问题!!!!
  • linux下有没供C用的类似ADO或ODBC的通用数据库接口?
  • 请问大家开发ado数据库程序时,使用通用访问类吗?
  • 如何用ADO控件把SQLServer现有的数据库另存为一个新的数据库的功能?

关键词

  • .net
  • ado.net
  • 数据库
  • ado
  • access
  • sqlcmd
  • wsqlcommand
  • dsretval
  • commandtimeout
  • 参数

得分解答快速导航

  • 帖主:boyfling
  • windinwing
  • lxcc
  • windinwing
  • lxcc
  • cnming
  • xiaopai20
  • fengqingyang1979
  • hivak47
  • veijerd

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo