昨天遇到了一个非常郁闷的问题,这个问题我几乎花了一天的时间才找到了造成问题的症结并解决。

问题是这样,原本一个使用Sqlserver数 据库的系统,我要让它实现Access数据接口,即我可以很方便地把这个系统从SqlServer数据库切换到Access数据库,由于此系统采用了抽象 工厂模式,只需增加一个Access数据库的接口层即可,我采用了DbHelperOleDb,然后写了OleDbDAL数据层接口。调试的时候,其它一 切顺利,我暗喜,觉得轻松搞定数据库接口层的转换很了不起,可是当我在后台更新数据的时候,没有出错,但就是数据无法更新,曾怀疑对数据库的权限操作问 题,但是插入和删除数据都是OK的,排除了这个可能,什么问题?我就在里面纠缠了很久,尝试了很多方式,走了不少弯路,问了不少人,百度谷歌了不少资料, 几乎花了一天的时间,在无意中,有一处数据更新终于成功了,但是我不知什么原因使得它终于成功了,但是它让我看到了胜利的曙光,我再研究了其它处不成功的 更新,并仔细查看不成功和成功更新的区别,天啊,原来问题就是在access数据库里面,OleDbParameter[]parameters ={}里面的参数是顺序是一定要按Update语句里面变量的顺序的,但是SqlServer数据库则没有这个要求!

下面把正确的写法贴出来,在网上也有不少朋友遇到过这样的问题,希望这个信息对他们有帮助。

特别注意的是,在 OleDbParameter[]parameters = {}数组里面参数的顺序一定要和Update语句里面的参数的顺序一致。

 /// <summary>
/// 更新一条数据
///</summary>
public voidUpdate(ZPY.Model.News model)
{
StringBuilderstrSql=new StringBuilder();
strSql.Append("updateNews set ");
strSql.Append("NewsTitle=@NewsTitle,");
strSql.Append("NewsContent=@NewsContent,");
strSql.Append("NewsFrom=@NewsFrom,");
strSql.Append("NewsTime=@NewsTime,");
strSql.Append("DefaultPic=@DefaultPic,");
strSql.Append("BigClassID=@BigClassID,");
strSql.Append("SmallClassID=@SmallClassID,");
strSql.Append("Hits=@Hits,");
strSql.Append("IsTop=@IsTop,");
strSql.Append("IsPass=@IsPass,");
strSql.Append("AddMan=@AddMan");
strSql.Append("where ID=@ID ");
OleDbParameter[]parameters = {
//注意里面参数的顺利一定要和Update语句里面参数是顺序一致,比如Update语句里面第一个参数 // 是@NewTitle,这里也是,Update语句里面最后一个参数是@ID,这样最后一个参数一定要是@ID
newOleDbParameter("@NewsTitle", OleDbType.VarChar,),
newOleDbParameter("@NewsContent", OleDbType.VarChar,),
newOleDbParameter("@NewsFrom", OleDbType.VarChar,),
newOleDbParameter("@NewsTime", OleDbType.Date),
newOleDbParameter("@DefaultPic", OleDbType.VarChar,),
newOleDbParameter("@BigClassID", OleDbType.Integer,),
newOleDbParameter("@SmallClassID", OleDbType.Integer,),
newOleDbParameter("@Hits", OleDbType.Integer,),
newOleDbParameter("@IsTop", OleDbType.Boolean,),
newOleDbParameter("@IsPass", OleDbType.Boolean,),
newOleDbParameter("@AddMan", OleDbType.VarChar,),
new OleDbParameter("@ID", OleDbType.Integer,),
}; parameters[].Value= model.NewsTitle;
parameters[].Value= model.NewsContent;
parameters[].Value= model.NewsFrom;
parameters[].Value= model.NewsTime;
parameters[].Value= model.DefaultPic;
parameters[].Value= model.BigClassID;
parameters[].Value= model.SmallClassID;
parameters[].Value= model.Hits;
parameters[].Value= model.IsTop;
parameters[].Value= model.IsPass;
parameters[].Value= model.AddMan;
parameters[].Value = model.ID; DbHelperOleDb.ExecuteSql(strSql.ToString(),parameters);
}

Access用OleDbParameter无法更新数据解决方案的更多相关文章

  1. TF54000: 由于服务器时钟设置可能不正确,无法更新数据解决方案(补充)

    此问题出现的原因: 服务器时间比本地时间大.由于TFS源代码的Source Control会根据签入时间做判断.如果后续签入的时间小于变更集的最新版本的时间,就会报错误“TF54000”,并拒绝签入. ...

  2. CRL快速开发框架系列教程三(更新数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  3. 浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案

    作者 王枫发布于2014年2月19日 综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个 ...

  4. 转:浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案

    综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个时代决胜未来的关键因素,而基于大数据的 ...

  5. C/S应用升级更新完整解决方案

    年末福利,C/S应用升级更新完整解决方案放送 程序员,工作累寿命短,大家应该学会分享,别浪费有限的生命与健康做重复的事情. C/S方式实现的应用有个升级更新功能是必需的,以前整过一个但是没考虑多套C/ ...

  6. MongoDB + Spark: 完整的大数据解决方案

    Spark介绍 按照官方的定义,Spark 是一个通用,快速,适用于大规模数据的处理引擎. 通用性:我们可以使用Spark SQL来执行常规分析, Spark Streaming 来流数据处理, 以及 ...

  7. mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题

    问题: mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题 参考: http://www.mongoosejs.net/docs/api.html#updateone_updateOn ...

  8. C#使用ListView更新数据出现闪烁解决办法

    C#使用ListView更新数据出现闪烁解决办法 在使用vs自动控件ListView控件时候,更新里面的部分代码时候出现闪烁的情况 如图: 解决以后: 解决办法使用双缓冲:添加新类继承ListView ...

  9. flask+sqlite3+echarts3+ajax 异步更新数据

    结构: /www | |-- /static |....|-- jquery-3.1.1.js |....|-- echarts.js(echarts3是单文件!!) | |-- /templates ...

随机推荐

  1. Canvas 绘制矩形,圆形,不规则图形(线条),渐变等图像效果

    绘制矩形: getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. fillStyle 方法将其染成红色,fill ...

  2. webstorm中es6语法报错,.vue文件中es6语法报错

    1.webstorm中es6语法报错,解决方法: 打开 Settings => Languages & Frameworks => Javascript把 Javascript L ...

  3. ASP.NET Button控件的UseSubmitBehavior属性引发的血案

    这里先不说标题上的UseSubmitBehavior属性是什么,先说下面这种情况. 通常,在我们写一个表单页面的时候,最下方会有“提交”和“返回”字样的两个按钮.顾名思义,它们的功能大家都知道,但是一 ...

  4. src/main/resources文件夹

    Error starting ApplicationContext. To display the auto-configuration report re-run your application ...

  5. 【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表

      转自:https://blog.csdn.net/eson_15/article/details/51506334 这个项目终于接近尾声了,注册功能我就不做了,关于注册功能我的另一篇博客详细的介绍 ...

  6. docker启动容器报错:IPv4 forwarding is disabled. Networking will not work

    报这个错误会导致宿主机以外的pc 访问不了容器 按照网上的解决办法: 在/usr/lib/sysctl.d/00-system.conf文件后加net.ipv4.ip_forward=1 即可 然后重 ...

  7. WCF IIS 部署错误处理

    做Web接口,原来一直用Web Service的,但是.Net 3.5后,Web Service变成了WCF.代码的编写上,把WebMethod特性改成了OperationContract,然后把方法 ...

  8. sql 模糊搜素拼接

    if($irb_order!=''){ $condition .= " AND d.irb_order like '%".$irb_order."%'"; } ...

  9. 创建一个Dribbble的作品展示

    Most designers on dribbble have a personal portfolio website that usually consists of a name and a b ...

  10. HTML5之新增的元素和废除的元素 (声明:内容节选自《HTML 5从入门到精通》)

    新增结构元素: section元素 section元素定义文档或应用程序中的一个区段,比如章节.页眉.页脚或文档中的其他部分.它可以与h1,h2,h3,h4,h5,h6元素结合起来使用,标示文档结构. ...