.NET 操作 Informix 库的 随机错误.

RedGoldFish 2007-07-14 06:21:25
我们用的.NET 2.0 + OpendLink ODBC Driver (5.2 版本) 读写Informix 库某一个表,同样的SQL 语句总是随机性地出现错,大约十次有一次出错,已经排除SQL语法和数据库约束这类错误,目前我们把错误定位在OpendLink ODBC Driver 本身的Bug或配置不当上.

主要代码如下:

System.Data.Odbc.OdbcConnection _connection
......
......

_connection = new System.Data.Odbc.OdbcConnection("FILEDSN=myDSN;Uid=root;Pwd=;");
_connection.Open();

......
......
System.Data.Odbc.OdbcCommand command = new System.Data.Odbc.OdbcCommand("DELETE FROM cmstbls WHERE tabname = 'AAA' AND colname = 'BBB';");

command.Connection = _connection ;
command.CommandType = CommandType.Text;
command.UpdatedRowSource = UpdateRowSource.None;
command.ExecuteNonQuery();

DSN配置如下:

[ODBC]
DRIVER=OpenLink Generic ODBC Driver
UID=root
SqlDbmsName=
FetchBufferSize=60
UseSSL=No
NoLoginBox=No
DeferLongFetch=No
ReadOnly=No
Options=192.168.10.18
Database=CMS
ServerType=Informix 2000
Host=192.168.10.18:5000
Server=OpenLink

随机出的错误有两种,看着都很不合理:

1. System.Data.Odbc.OdbcException: ERROR [42000] [OpenLink][ODBC][Informix Server]A syntax error has occurred. (-201)
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
at TestOpenLinkDirver.Form1.btnRunCommand_Click(Object sender, EventArgs e) in C:\Working\Interaction Data Service\TestOpenLinkDirver\Form1.cs:line 69

2. System.Data.Odbc.OdbcException: ERROR [HY000] [OpenLink][ODBC][Informix Server]An illegal character has been found in the statement. (-202)
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
at TestOpenLinkDirver.Form1.btnRunCommand_Click(Object sender, EventArgs e) in C:\Working\Interaction Data Service\TestOpenLinkDirver\Form1.cs:line 69


我的问题:

1. 有没有朋友也出现过类似的错误?是不是这个OpendLink ODBC Driver 本身的Bug?

2. 如果不用OpendLink ODBC Driver ,有哪些其它的Driver 对Informix 的操作比较可靠,建议一下.

请在此方面有经验的朋友指点下,多谢.
...全文
970 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedGoldFish 2007-08-07
  • 打赏
  • 举报
回复
结帖,虽然没有满意答案.
RedGoldFish 2007-07-27
  • 打赏
  • 举报
回复
还有人知道吗?
OracleRoob 2007-07-22
  • 打赏
  • 举报
回复
不是SQL语句问题

感觉是驱动问题

检查一下是否有对象锁定,比如说:在测试时,只用一个用户访问数据库


或者,新建一个表,对新建的表进行操作,看看还有没有问题
RedGoldFish 2007-07-18
  • 打赏
  • 举报
回复
To kaixin110(goodbus.cn) :

你建议的那几个东西你自己在.NET 里用过吗? 感觉如何?
ustbwuyi 2007-07-18
  • 打赏
  • 举报
回复
没遇到过这种错误
kaixin110 2007-07-18
  • 打赏
  • 举报
回复
http://blogs.msdn.com/dotnetinterop/archive/2007/05/07/ibm-connects-net-to-informix-databases.aspx
http://www.thescripts.com/forum/thread252275.html
http://uda.openlinksw.com/dotnet/mt/dotnet-informix-mt/
http://www-306.ibm.com/software/data/informix/pubs/library/net_5.html

You want to help the problem !
RedGoldFish 2007-07-15
  • 打赏
  • 举报
回复
这里没有朋友用过 OpendLink ODBC Driver + Informix 吗?
vainnetwork 2007-07-14
  • 打赏
  • 举报
回复
关注 ,帮顶了
RedGoldFish 2007-07-14
  • 打赏
  • 举报
回复
LS的朋友,我们最初也是检查自己的SQL 语句的语法错误或保留字,但很快就排除了,因为同一个SQL 语句(一模一样的)在一个while循环里运行100次,有90多次都正确,随机的有几次出上边的那两个错误.

测试的SQL语句就是这个,再简单不过了,我用眼睛瞪了它三天也没看出有什么问题:

DELETE FROM cmstbls WHERE tabname = 'AAA' AND colname = 'BBB';

其中tabname ,colname 都是字段名.

因此我们怀疑OpendLink ODBC Driver
Jinglecat 2007-07-14
  • 打赏
  • 举报
回复
1. System.Data.Odbc.OdbcException: ERROR [42000] [OpenLink][ODBC][Informix Server]A syntax error has occurred. (-201)
==========
提示语法错误,再次检查 SQL 语句

2. System.Data.Odbc.OdbcException: ERROR [HY000] [OpenLink][ODBC][Informix Server]An illegal character has been found in the statement. (-202)
===========
非法字符?SQL 语句中出现 关键字?保留字?乱码?
RedGoldFish 2007-07-14
  • 打赏
  • 举报
回复
我们感觉这个OpendLink ODBC Driver 对 Informix 的操作恨不得稳定,真不知道OpendLink这个产品咋还能有市场.
vainnetwork 2007-07-14
  • 打赏
  • 举报
回复
没用过.
RedGoldFish 2007-07-14
  • 打赏
  • 举报
回复
在两次sql操作之间加适当延时试试,有时sql失败是因为数据库繁忙导致
___________________________________________________________________
这也试过,不能彻底解决问题.
CathySun118 2007-07-14
  • 打赏
  • 举报
回复
在两次sql操作之间加适当延时试试,有时sql失败是因为数据库繁忙导致

1,195

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 Informix
社区管理员
  • Informix社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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