执行ADO测试程序相关使用说明
原来在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测试程序总以为是输出参数类型有问题,试过几次,长度也改过。不行。
后来注意到:跟踪执行的时候执行成功,总是在取参数的时候出错。
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20