栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Access ODBC驱动程序中无效的日期时间格式异常

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Access ODBC驱动程序中无效的日期时间格式异常

考虑到更新后的问题中的测试数据,以下变通办法似乎可以正常工作。它检查

.Driver
打开的连接的属性,以查看它是否正在从Access数据库中读取。如果是这样,它将获取
Date/Time
as的值
Double
,然后将其转换回
System.DateTime
。否则,它将仅从
datetime
SQL
Server正常检索。

(请注意,此特定方法

使用`rdr[0]) * 86400`''对于Access中早于的值(即,当值为负时) **将无法**正常工作。)`Date/Time
1899-12-30 00:00:00
`Double

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Odbc;namespace odbcTest{    class Program    {        static void Main(string[] args)        { using (OdbcConnection con = new OdbcConnection()) {     //con.ConnectionString =     //        @"Driver={SQL Server};" +     //        @"Server=(local)SQLEXPRESS;" +     //        @"Database=myDb;" +     //        @"Trusted_connection=yes;";     con.ConnectionString =  @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +  @"Dbq=C:__tmpdateTestTestSqlRead.accdb;";     con.Open();     using (OdbcCommand cmd = new OdbcCommand())     {         DateTime dtm;         var accessTime0 = new DateTime(1899, 12, 30);         bool fromAccess = (con.Driver == "ACEODBC.DLL");         cmd.Connection=con;         if (fromAccess)  //cmd.CommandText = "SELECt DateTimeCol FROM MyTable";  // this fails  cmd.CommandText = "SELECt {fn CDbl(DateTimeCol)} FROM MyTable";         else  cmd.CommandText = "SELECt sqlDate FROM Table1 WHERe ID = 1";         OdbcDataReader rdr = cmd.ExecuteReader();         rdr.Read();         if (fromAccess)  dtm = accessTime0.AddSeconds(Convert.ToDouble(rdr[0]) * 86400);         else  dtm = Convert.ToDateTime(rdr[0]);         Console.WriteLine(dtm.ToString());         rdr.Close();     }     con.Close(); } Console.WriteLine(); Console.WriteLine("Done."); Console.ReadKey();        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/402285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号