На моем сервере установлены Informix Dynamic Server 11.50 и Informix Client SDK 3.5. Я занимаюсь разработкой приложения .NET для чтения данных из базы данных Informix с использованием функций 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.]
Я пытался изменить столбцы с типами данных Serial и BigInt на Integer. И все работает отлично без изменения одной строки кода.
Мне нужен совет, как решить эту проблему, так как мне нужен столбец с последовательным типом данных в качестве столбца с возрастающим идентификатором. Для столбца типа данных BigInt может быть вместо этого мы можем изменить его на столбец с типом данных Integer.
Любой совет приветствуется.