心情好,散代码,散分

Ivony 2005-11-23 03:19:19
刚刚把我的数据库操作帮助器在2.0下重构了一下,发出来给大家看看。

注意,up,顶,mark的最多只会给3分,请多多提出批评意见建议。



using System;
using System.Data;

using System.Data.SqlClinet;

using System.Text.RegularExpressions;

//注意,我并没有收集所有的using放在这里

public abstract class DbUtility : IDbUtility
{


#region 抽象方法

protected abstract IDbCommand CreateCommand( bool newConnection );

protected abstract IDataAdapter CreateDataAdapter( IDbCommand selectCommand );

protected abstract IDataParameter CreateParameter( string name, object value );

#endregion





/// <summary>
/// 将查询结果作为表返回
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual DataTable ExecuteData( string commandText, params object[] parameters )
{
return ExecuteData( null, null, commandText, parameters );
}

/// <summary>
/// 将查询结果作为表返回
/// </summary>
/// <param name="dataSet">需要被填充的数据集</param>
/// <param name="tableName">填充的表名</param>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual DataTable ExecuteData( DataSet dataSet, string tableName, string commandText, params object[] parameters )
{
IDataAdapter adapter = CreateDataAdapter( CreateCommand( commandText, parameters ) );

if (dataSet == null)
dataSet = new DataSet();

adapter.Fill( dataSet );

DataTable dataTable = dataSet.Tables[dataSet.Tables.Count - 1];


if (tableName != null)
dataTable.TableName = tableName;

return dataTable;
}

/// <summary>
/// 执行无结果的查询
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual int ExecuteNonQuery( string commandText, params object[] parameters )
{
return ExecuteNonQuery( CreateCommand( commandText, parameters ) );
}

/// <summary>
/// 执行查询,并返回首行首列
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual object ExecuteScalar( string commandText, params object[] parameters )
{
return ExecuteScalar( CreateCommand( commandText, parameters ) );
}

/// <summary>
/// 执行查询,并返回首行
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual DataRow ExecuteSingleRow( string commandText, params object[] parameters )
{
throw new NotImplementedException();
}



/// <summary>
/// 执行无结果的查询
/// </summary>
/// <param name="command">查询命令</param>
/// <returns></returns>
public static int ExecuteNonQuery( IDbCommand command )
{

if (command.Connection.State == ConnectionState.Closed)
{
try
{
command.Connection.Open();
return command.ExecuteNonQuery();
}
finally
{
command.Connection.Close();
}
}
else
return command.ExecuteNonQuery();
}

/// <summary>
/// 执行查询,并返回首行首列
/// </summary>
/// <param name="command">查询命令</param>
/// <returns></returns>
public static object ExecuteScalar( IDbCommand command )
{

if (command.Connection.State == ConnectionState.Closed)
{
try
{
command.Connection.Open();
return command.ExecuteScalar();
}
finally
{
command.Connection.Close();
}
}
else
return command.ExecuteNonQuery();
}


public static IDataReader ExecuteReader( IDbCommand command )
{
if (command.Connection.State == ConnectionState.Closed)
{
command.Connection.Open();

return command.ExecuteReader( CommandBehavior.CloseConnection );
}
else
return command.ExecuteReader();
}


protected virtual IDbCommand CreateCommand( string commandText, params object[] parameters )
{

IDbCommand command = CreateCommand( true );

new CommandTextProcesser().ProcessCommandText( ref commandText, ref parameters );
command.CommandText = commandText;


for (int i = 0; i < parameters.Length; i++)
{
command.Parameters.Add( CreateParameter( "Param" + i, parameters[i] ) );
}

return command;
}
}
...全文
730 92 打赏 收藏 转发到动态 举报
写回复
用AI写文章
92 条回复
切换为时间正序
请发表友善的回复…
发表回复
alanzhou 2005-11-25
  • 打赏
  • 举报
回复
收藏
LGame 2005-11-24
  • 打赏
  • 举报
回复
只有顶了
Ivony 2005-11-24
  • 打赏
  • 举报
回复
加分了,100->200
社会栋梁 2005-11-24
  • 打赏
  • 举报
回复
jf
slzj118 2005-11-24
  • 打赏
  • 举报
回复
学习ing~~~~~~~~~~
NetSky2010 2005-11-24
  • 打赏
  • 举报
回复
路过,学习。
cdxjggg 2005-11-24
  • 打赏
  • 举报
回复
招:项目经理
三年以上项目经验(B/S和C/S)。
精通asp.net(C#)。
精通WebService或Remoting
能熟练编写复杂TSQL语句。
能有效控制项目进度,项目成本。
薪资:3000-5000
有意者立即致电:028-85157825
工作地点:成都
-------------------------
招asp.net软件工程师
精通C#语言。至少有一个作品或者参与过一个项目开发。
能熟练编写复杂TSQL语句。
熟练使用WebService或Remoting。
熟练编写需求、设计、测试等文档。
薪资:2000-4000
有意者立即致电028-85157825
工作地点:成都

QQ:2675431
Email:Cdxjggg@hotmail.com
koenemy 2005-11-24
  • 打赏
  • 举报
回复
楼主说的,我还是不同意。

要不重开一贴讨论一下。。。呵呵。我没没有可用分了。
daimi01171 2005-11-24
  • 打赏
  • 举报
回复
接分
Ivony 2005-11-24
  • 打赏
  • 举报
回复
不要相信什么全部用存储过程和视图的所谓标准,当你的需求报告三天一小改,五天一大改的时候,数据库甚至都无法建模的时候,你不得不抛弃所谓的标准。


不同意,如果SQL写得到处都有的话,确实更麻烦,层次的标准是不能抛弃的,我是这么认为


=================================================================

可能误会了,我说的是反对全存储过程的硬性标准,并没有说不要分层。我的项目都至少有两层结构的,但是就算数据访问层独立,简化代码也是必须的。

另外分层也不应该盲目,视情况而定,如这样的表单:


姓名
性别
出生
籍贯
……这里省略XX项……
<<<后面还有可能要增加项>>>


如果为它写三层到数据库,那还不如把数据库接口直接架到UI层来。
因为无非就是一个INSERT INTO语句。


如果不需要查询,我还想弄个结构把所有的信息封包后序列化保存。
z_hp 2005-11-24
  • 打赏
  • 举报
回复
学习学习,谢谢!
saioma 2005-11-24
  • 打赏
  • 举报
回复
真的很不错。。。UP起来。
虚心学习中
feihu_02 2005-11-24
  • 打赏
  • 举报
回复
学习
Kshatriya 2005-11-24
  • 打赏
  • 举报
回复
写错了,是不同意
Kshatriya 2005-11-24
  • 打赏
  • 举报
回复
不要相信什么全部用存储过程和视图的所谓标准,当你的需求报告三天一小改,五天一大改的时候,数据库甚至都无法建模的时候,你不得不抛弃所谓的标准。


同意,如果SQL写得到处都有的话,确实更麻烦,层次的标准是不能抛弃的,我是这么认为
koenemy 2005-11-24
  • 打赏
  • 举报
回复
sql语句是不是也得重用啊,,,

Happy2046 2005-11-24
  • 打赏
  • 举报
回复
接分
xiaodong_1567 2005-11-24
  • 打赏
  • 举报
回复
不错,谢了,接分
itmingong 2005-11-24
  • 打赏
  • 举报
回复
dbUtility.ExecuteSingleRow( "SELECT * FROM Agent WHERE ID = {0:@} AND name = {1:@}", 100, "Ivony" );
koenemy 2005-11-24
  • 打赏
  • 举报
回复
不要相信什么全部用存储过程和视图的所谓标准,当你的需求报告三天一小改,五天一大改的时候,数据库甚至都无法建模的时候,你不得不抛弃所谓的标准。


我想这和建模什么的没有什么关系吧。。。。
一个项目层次如果不清。哪当你的需求三天一小改,还是大改的。哪不就更麻烦了嘛
加载更多回复(72)
唯爱交友源码java 沉晓's Blog 一、博客概述 :grapes: 项目背景 我一直追求着一种纯粹,写技术博客,就好好地写,心无旁骛。 我目前唯一写作的平台就是CSDN,身边也有一部分人写了一篇文章在各个平台都有发表,我不喜欢这样,我觉得有复制粘贴的功夫,不如多花点时间打磨文章。 同样。我也不喜欢技术博文中掺杂过多的杂质,我讨厌营销号的文章,也讨厌发表大量与技术无关的文章。 于是因为这种状况,很长的一段日子里,我一直都缺失存放原始的感情、梦想、挣扎、无奈、和希望、和爱的空间。所以有了这个博客网站,它能陪我终老吗,不能吧。可能有一天,我写不动了,或许它就自然消了。但我还是会希望,永远有一个属于自己的角落。在那个世界里,不逃荒不颠沛。 我希望在那里记录一些不经意间收获的“温暖”、可以写日记记录每一段故事、每一折心情、每一个句读,生活中的小事,这就是为什么要建立一个博客网站的意义。 :melon: 博客地址: :watermelon: 博客演示 (1)首先是web端 博客首页: 首页含有博文展示、公告(计划)展示、博文推荐、黑板报(展示博文类别和标签)等 有一个天气的小图标,鼠标放上去后,会展示今天,明天和后天的天气信息,IP自动
不要问我低多少钱! 多低的价格能满足你的欲望? 没有利润的服务,如果我敢做,你敢用吗? 请记着祖先的一句老话【一份价钱一分货】! 天上不会掉馅饼! 便宜的东西,在你买的那一刻是开心的, 之后用(看)一次闹心一次。 贵的东西,在你买的那一刻是肉疼的 但之后的每一次都是舒心的。 生活的格调在于你的品味, 生命的质量在于你的选择, 时间会证明你的理性和瞻远的眼光。 外行人比的是价格, 内行人比的是价值、比的是品质、比的是知识! 没有一点点利润,哪来的高大上服务? 单纯的比价格,时间久了 ,你就发现: 一降再降的价格永远满足不了自己的心 永远会觉得自己买贵了、买的不值, 自己一直在闹心! 如果你在乎的是服务,就不要管价格的高低! 问了价格,可能会破坏你享受的心情! 如果你在乎的是质量,就请尊重产品的价格; 如果你想要的是便宜,请不要企图会有好质量! "一分钱一分货",道理亘古不变 再美的语言没有质量佐证就是谎言! 切记:想要人参的功效,花的是买萝卜的钱, 后,买到的就不可能是人参! 好贵、好贵、好才贵! 在竞争激烈,价格透明的今天, 价格取决于产品的真实价值(包括知识)! 信不信,你自己说了算…… 【课程目标】 一次成功SSM+辅助插件整合 【课程结构】 1.项目的整体架构。 2.项目的技术选型。 3.SSM分析建立数据库 4.淘宝列表分页展示 5.万能分页:让天底下没有难做的分页 6.springmvc4+Mybatis3+Spring4的增删改查 7.Echarts3整合 8.jQuery ,jQuery-ui,ajax的整合json。 9.谷歌json技术处理

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧