首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Informix >

.NET 操作 Informix 库的 随机异常

2012-02-21 
.NET 操作 Informix 库的 随机错误.我们用的.NET2.0+OpendLinkODBCDriver(5.2版本)读写Informix库某一个表

.NET 操作 Informix 库的 随机错误.
我们用的.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   的操作比较可靠,建议一下.


请在此方面有经验的朋友指点下,多谢.

[解决办法]
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 语句中出现 关键字?保留字?乱码?
[解决办法]
关注 ,帮顶了
[解决办法]
在两次sql操作之间加适当延时试试,有时sql失败是因为数据库繁忙导致
[解决办法]
没用过.
[解决办法]
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 !
[解决办法]
没遇到过这种错误
[解决办法]
不是SQL语句问题

感觉是驱动问题

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


或者,新建一个表,对新建的表进行操作,看看还有没有问题

热点排行