ibm.data.informix没有从数据库中获取正确的数据

时间:2011-12-15 14:37:03

标签: .net database informix

服务器:IBM Informix Dynamic Server版本11.70.FC1GE
客户端:IBM数据服务器驱动程序包5765-F41
Dotnet客户端DLL:

IBM.Data.Informix.dll
文件版本:9.7.4.2
汇编版本:9.0.0.2
产品版本:9.7.4.2

表格信息:

Column name     Type                       Nulls

timeid          interval day to minute     yes
cb1             smallint                   yes
cb2             smallint                   yes
data1           smallfloat                 yes
data2           smallfloat                 yes
...
data60          smallfloat                 yes
data61          smallfloat                 yes


.Net代码:

dim _conn as New IfxConnection("Database=HMS;Server=10.1.1.9:17859;UID=informix;Password=informix;")
_conn.Open()

Dim _cmdstr As String = "select * from data"
Dim _cmd As New IfxCommand(_cmdstr, _connection)
Dim _dr As IfxDataReader = _cmd.ExecuteReader(System.Data.CommandBehavior.SingleResult)
While _dr.Read
Debug.WriteLine(_dr.GetValue(0))
next

_dr.GetValue(0)的类型是一个字符串。 正如你在这里看到的那样,很多区间数据都没有正确获取! (只有前3个字符)

这会导致数据大量丢失。 有谁知道我怎么能解决这个问题?

提前谢谢。

Output from debug writeline: (... = good data I left out)

1 00:00
...
2 00:45
2 01:00
2 0
2 01:30
2 01:45
...
2 23:30
2 23:45
3 0
3 00:15
3 00:30
...
3 02:00
3 02:15
3 0
3 02:45
3 03:00
...
4 03:30
4 03:45
4 0
4 04:15
4 04:30
...
5 02:15
5 02:30
5 0
5 03:00
5 03:15
...
5 04:45
5 05:00
5 0
5 05:30
5 05:45
...
6 06:00
6 06:15
6 0
6 0
6 07:00
6 07:15
...
7 05:00
7 05:15
7 0
7 05:45
7 06:00
...
7 07:30
7 07:45
7 0
7 08:15
7 08:30
...
8 08:45
8 09:00
8 0
8 0
8 09:45
8 10:00
...
9 07:45
9 08:00
9 0
9 08:30
9 08:45
...
9 10:15
9 10:30
9 1
9 11:00
9 11:15
...
10 11:30
10 11:45
10 1
10 12:15
10 12:30
...
11 10:15
11 10:30
11 1
11 11:00
11 11:15
...
11 12:45
11 13:00
11 1
11 13:30
11 13:45
...
12 14:00
12 14:15
12 1
12 1
12 15:00
12 15:15
...
13 12:45
13 13:00
13 1
13 1
13 13:45
13 14:00
...
13 15:30
13 15:45
13 1
13 16:15
13 16:30
...
14 16:45
14 17:00
14 1
14 17:30
14 17:45
...
15 15:30
15 15:45
15 1
15 16:15
15 16:30
...
15 18:00
15 18:15
15 1
15 18:45
15 19:00
...
16 19:15
16 19:30
16 1
16 20:00
16 20:15
...
17 18:00
17 18:15
17 1
17 18:45
17 19:00
...
17 20:30
17 20:45
17 2
17 21:15
17 21:30
...
18 21:45
18 22:00
18 2
18 22:30
18 22:45
...
19 20:30
19 20:45
19 2
19 21:15
19 21:30
...
19 23:00
19 23:15
19 2
19 2
20 00:00
20 00:15
...
21 00:15
21 00:30
21 0
21 0
21 01:15
21 01:30
...
21 23:15
21 23:30
21 2
22 00:00
22 00:15
..
22 01:45
22 02:00
22 0
22 02:30
22 02:45
...
23 03:00
23 03:15
23 0
23 03:45
23 04:00
...
24 01:45
24 02:00
24 0
24 02:30
24 02:45
...
24 04:15
24 04:30
24 0
24 05:00
24 05:15
...
25 05:30
25 05:45
25 0
25 06:15
25 06:30
...
26 06:45
26 07:00
26 0
26 07:30
26 07:45
...
27 08:00
27 08:15
27 0
27 08:45
27 09:00
...
29 10:30
29 10:45
29 1
29 1
29 11:30
29 11:45
...
30 12:00
30 12:15
30 1
30 12:45
30 13:00
...
30 23:45

1 个答案:

答案 0 :(得分:1)

通过ODBC,它可以正常工作。

使用另一个使用JDBC的程序,它可以正常工作。

使用一个使用embedded-sql的旧C程序,它可以正常工作。

虽然运行了一点时间我通过对nvarchar进行强制修复(9)

所以SQL语句变为:

select cast(timeid as nvarchar(9)), * from data