使用IDataReader,Sql日期表现不佳

时间:2013-02-15 11:48:15

标签: .net sql sql-server-2008

我有一个奇怪的问题,我无法弄清楚。我在SQL Server 2008 R2中有一个数据库,我使用的数据库是使用System.Data命名空间的IDbCommand,IDataReader等接口编写的数据库。

我现在注意到,当我的程序没有按预期工作时,IDataReader会从日期列中得到错误的结果。在数据库中,日期列的值为2020-12-31 00:00:00,但是当我调试代码并查看读者得到的值时,它是:#12/14/2012#{Date}。该行中的其他列具有正确的数据。如果我因某种原因更改行ID并查询日期列,我会得到相同的日期...但是当我更改数据库并查询相同的表和列时,我得到了正确的日期......

我当时认为问题出在数据库中。所以我创建了一个使用SqlCommand和SqlDataReader的新程序,读者得到了正确的日期而不是#12/14/2012#。

任何想法可能是什么原因造成的?我是否需要使用System.Data.SqlClient命名空间的接口重写旧代码? (希望不是因为它是我们使用的大型图书馆。)

编辑:

问题不在于使用接口。我使用System.Data.SqlClient向同一个项目添加了一个类,我从日期列中得到了相同的结果。

代码非常简单:

Public Function GetRateDate(ByVal RaId As Integer) As Date
        Try
            Dim result As Date
            Dim sql As String = "SELECT RaDateEnd FROM Rates WHERE RaId=" & RaId
            Using cnn As SqlConnection = New SqlConnection(_connectionString)
                Using cmd As SqlCommand = New SqlCommand(sql, cnn)
                    cnn.Open()

                    Using DataReader As SqlDataReader = cmd.ExecuteReader()
                        Do While DataReader.Read()
                            result = System.Convert.ToDateTime(DataReader("RaDateEnd"))
                        Loop
                    End Using
                End Using
            End Using

            Return result
        Catch ex As Exception
            Throw ex
        End Try
    End Function

使用代码:

Dim db As New DatabaseFunctions()
db.ConnectionString = command.Connection.ConnectionString
db.Connect()
Dim dt As Date = db.GetRateDate(rateId)
db.Disconnect()

调试显示dt变量的值为:#12/14/2012#,数据库中的值为:2020-12-31 00:00:00。

当我从我创建的小型测试程序中使用它时,这个完全相同的功能(使用相同的数据库)。测试程序使用.NET 4和WPF,这个旧程序是一个带有.net 2.0的DLL(用vb.net编写)。

编辑:

好的,现在有点尴尬......看起来DLL只是出于某种原因完全连接到另一个数据库。有时你只是不认为显而易见的情况就是如此。很抱歉浪费任何人阅读这篇文章的时间。

0 个答案:

没有答案