快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

如何实现ADO测试程序

这篇文章将为大家详细讲解有关如何实现ADO测试程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都网站设计、网站建设、网站优化、软件开发、网站改版等服务,在成都十年的网站建设设计经验,为成都上1000家中小型企业策划设计了网站。

原来在Sql Server及Oracle上操作时,执行完成后直接把连接关闭了。返回的参数想怎么处理就怎么处理,并不会出错,注意使用COM交互操作访问ADO的数据将极大的降低性能。

不知道这里有多少人用Sybase做数据库开发的,我是有点受不了了。用了ADO测试程序,冲破重重阻力,终于系统算是正常运行了,要做更进一步的处理:增加数据权限。我们原来是在Sql Server上用函数直接返回的结果集来判断的。

但是Sybase不支持函数,只好用存储过程返回一个判断权限的条件字符串动态执行。问题是取出输出参数总提提示“Command has been closed”。奇怪啊,明明执行的时候是Open了Connection了。写了一个ADO测试程序:

 AseConnection con = new AseConnection("Data Source='SYBASE'; Port=5000; UID='sa'; PWD=''; Database='data';Connection Timeout='300';") ;   AseCommand com = new AseCommand("GetDataRightSQL", con) ;   com.CommandType = System.Data.CommandType.StoredProcedure ;   try   {   AseParameter prm = new AseParameter("@UserID", 1) ;   //prm.Direction = System.Data.ParameterDirection.Input ;   com.Parameters.Add(prm) ;   prm = new AseParameter("@Category","Department") ;   com.Parameters.Add(prm) ;   com.Parameters.Add(new AseParameter("@FieldName", "Dept_ID")) ;   prm = new AseParameter("@returnSql", AseDbType.VarChar, 250) ;   prm.Direction = System.Data.ParameterDirection.Output ;   com.Parameters.Add(prm) ;   con.Open() ;   com.ExecuteNonQuery() ;   Console.WriteLine(com.Parameters["@returnSql"].Value) ;

由于是我们有一个数据层专门处理数据库操作,开始怀疑封装的不好了。检查了N次也不知道在哪出错,ADO测试程序总以为是输出参数类型有问题,试过几次,长度也改过。不行。
后来注意到:跟踪执行的时候执行成功,总是在取参数的时候出错。

再看一下错误信息“Command has been closed”,晕!ADO测试程序不会是取参数值的时候要求数据库连接保持Open状态吧? 修改一下测试代码:

AseParameter prm = new AseParameter("@UserID", 1) ;   //   prm.Direction = System.Data.ParameterDirection.Input ;   com.Parameters.Add(prm) ;   prm = new AseParameter("@Category","Department") ;   com.Parameters.Add(prm) ;   com.Parameters.Add(new AseParameter("@FieldName", "Dept_ID")) ;   prm = new AseParameter("@returnSql", AseDbType.VarChar, 250) ;   prm.Direction = System.Data.ParameterDirection.Output ;   com.Parameters.Add(prm) ;   con.Open() ;   com.ExecuteNonQuery() ;   con.Close() ; //提前关闭数据库   Console.WriteLine(com.Parameters["@returnSql"].Value) ;

关于“如何实现ADO测试程序”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


新闻名称:如何实现ADO测试程序
文章来源:http://6mz.cn/article/jeoesc.html

其他资讯