sqlitethrows“stringnotrecognizedasavaliddatetime”不时。例如,我创建了一个包含单个表和一些列的简单数据库,并用一些测试数据填充它,如下所示。sqlite>.schemaCREATETABLE"shows"(idintegerprimarykeyascautoincrement,showNameTEXT,guestTEXT,dateAireddate,dateWatcheddate);sqlite>select*fromshows;6|试播|试播嘉宾1|2012.05.01|2012.07.107|testshow|testguest2|2012.05.02|2012.07.108|testshow|testguest4|2012.05.04|2012.07.10我正在使用这里提供的System.Data.Sqlite库,但是它尝试读取日期列时不断出错。我尝试将日期设置为dd-MM-yyyy格式,但我仍然收到错误“字符串未被识别为有效的日期时间”。我试过使用DateTime.Parse或将其转换为日期时间或仅使用ToString()来查看发生了什么,但我一直遇到同样的错误。我可以很好地阅读文本字段,但不能阅读日期字段。我的C#代码如下varsqliteConn=newSQLiteConnection("DataSource=data/shows.db;Version=3;New=False;Compress=True");sqliteConn.Open();SQLiteCommandcmd=newSQLiteCommand(sqliteConn);cmd.CommandText="select*fromshows";SQLiteDataReaderreader=cmd.ExecuteReader();while(reader.Read()){varshowName=reader["showName"];//这是它不断给我一个错误的地方。//我尝试了各种方法,例如DateTime.ParsevarairedDate=DateTime.ParseExact("yyyy.MM.dd",reader["dateAired"].ToString(),newCultureInfo("en-AU"));}reader.Close();任何帮助将不胜感激。您好,根据此线程中的讨论,我决定使用“datetimeformat”参数来构建我的连接字符串,并解决了“字符串未被识别为有效日期时间”的问题。我的示例连接字符串:source=;version=3;new=False;datetimeformat=CurrentCulture此功能于2013年7月8日在版本1.0.87.0中发布(请参阅发行说明)此线程可能有点旧,但我有同样的问题并找到了“解决方案”。似乎System.Data.SQLite没有正确处理DateTime。我尝试了DateTime.ParseExact并在我的数据库中给出了格式(mm/dd/yyyy),但我注意到它只是在调用DataReader列上的日期的ToString()时出错。这看起来很奇怪,因为我不是要将它放入日期而是将其作为字符串读取。所以我回到我从数据库调用的视图并将我所有的日期包装在CAST中作为nvarchar(10)。这样,数据库将返回一个字符串而不是日期。现在,DateTime.Parse工作正常!我会在视图上使用触发器来拉回字符串/日期并插入/更新基础表,以便所有转换都发生在数据库中,而不是System.Data.SQLite。2012年12月的某个时候有一个新版本的System.Data.SQLite,我希望这个问题得到修复!从表名中选择strftime('%m/%d/%Y',substr(colName,0,20))这将起作用,我已经测试过这个,因为sqlite中有内置函数将字符串转换为日期时间格式错误“字符串未被识别为有效的日期时间”。将系统日期时间格式更改为数据库字段日期时间格式。希望对大家有所帮助...以上就是C#学习教程的全部内容:sqlite抛出“stringnotrecognizedasavaliddatetime”,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
