我在服務器上安裝了Informix Dynamic Server 11.50和Informix Client SDK 3.5。我正在開發一個.NET應用程序,使用ODBC函數從Informix數據庫讀取數據。對Informix Serial和BigInt數據類型的ODBC支持
在數據庫中,我有一個表中定義了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.]
我試着修改串行和BigInt數據類型的列到整數。而且,一切工作正常,無需修改一行代碼。
我確實需要一些建議如何克服這個問題,因爲我需要串行數據類型列作爲增量id列。對於BigInt數據類型列,可能我們可以將其更改爲具有Integer數據類型的列。
歡迎任何建議。
謝謝,朋友!我必須將所有具有Serial和BigInt數據類型的列都轉換爲Integer,以便它可以工作。這意味着我現在有很多工作要做。唉...... – poh 2010-01-20 08:17:29
@poh:我只是做了一些搜索,看起來有一個本地的Informix .NET數據提供程序(http://publib.boulder.ibm.com/infocenter/idshelp/v10/index .JSP?主題=/com.ibm.relnotes.doc/300xc2/netrel.html)。這幾乎肯定會消除像這樣的數據類型的問題。我專注於回答問題而不是解決問題。 – 2010-01-20 12:52:29