【发布时间】:2010-02-20 09:26:45
【问题描述】:
我的服务器上安装了 Informix Dynamic Server 11.50 和 Informix Client SDK 3.5。我正在开发一个 .NET 应用程序来使用 ODBC 函数从 Informix 数据库中读取数据。
在数据库中,我有一个表,其中定义了 Serial 和 BigInt 数据类型的列。我的数据检索函数如下所示。
Dim cmd As New Odbc.OdbcCommand
Dim da As New Odbc.OdbcDataAdapter
Dim ds As New DataSet
Dim sb As New StringBuilder("")
Try
Using cn As New Odbc.OdbcConnection(ConfigurationSettings.AppSettings("connString"))
cn.Open()
sb.Append("SELECT * FROM InterfaceSP ")
sb.Append("join Interface on InterfaceSP.InterfaceID = Interface.InterfaceID ")
sb.Append("left join InterfaceSPAction on InterfaceSP.InterfaceSPID = InterfaceSPAction.InterfaceSPID and action_status = 'ACTV' ")
sb.Append(" WHERE InterfaceSP.InterfaceID = ? ")
sb.Append(" ORDER BY InterfaceSP.SPName")
cmd.Connection = cn
cmd.CommandType = CommandType.Text
cmd.CommandText = sb.ToString
cmd.Parameters.AddWithValue("@InterfaceID", strInterfaceID)
da.SelectCommand = cmd
da.Fill(ds, "InterfaceSPList")
End Using
Return ds
Catch ex As Exception
Throw ex
End Try
最终结果数据集将被传递给数据网格对象。问题是,每当加载数据网格时,.NET 都会引发异常。
Unknown SQL type - -114.
[ArgumentException: Unknown SQL type - -114.]
我尝试将具有 Serial 和 BigInt 数据类型的列修改为 Integer。而且,无需修改一行代码,一切正常。
我确实需要一些建议来解决这个问题,因为我需要将串行数据类型列作为递增的 id 列。对于 BigInt 数据类型的列,我们可以将其改为 Integer 数据类型的列。
欢迎任何建议。
【问题讨论】: