gpt4 book ai didi

c# - 使用 C# Sql Reader 从 SQL Server 表中检索日期时间值

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:56 25 4
gpt4 key购买 nike

我正在查询 SQL Server 表以获取表中数据类型为 datetime 的值。

数据库中的项目是这样的:2014-05-17 23:52:09.333

下面的代码抛出这个异常:

Unable to cast object of type 'System.DateTime' to type 'System.String'.

代码:

internal List<string> CustomSqlQuery(string dbName, string dbTable, string dbColumn, string query, string connString)
{
var databaseItems = new List<string>();
var conn = new SqlConnection(connString);
var cmd = new SqlCommand(query, conn);

try
{
using (cmd)
{
conn.Open();
var reader = cmd.ExecuteReader();

if (reader.HasRows)
{
while (reader.Read())
{
// exception thrown on the following line
// Unable to cast object of type 'System.DateTime' to type 'System.String'.
var item = reader.GetString(reader.GetOrdinal(dbColumn));
databaseItems.Add(item);
}
}
}
conn.Close();
}
catch (Exception exception)
{
Logger.Log(Loglevel.Error, "Boom: {0}", exception.Message);
return null;
}
return databaseItems;
}

如何将日期时间转换成字符串?

最佳答案

该列被键入为日期时间,因此您必须使用 GetDateTime 方法调用来检索它。

如果您希望所有值都以string 的形式检索,无论数据库中的正确类型是什么,您都可以使用GetValueToString< 来实现 方法调用:

var item = reader.GetValue(reader.GetOrdinal(dbColumn)).ToString();

但是,您应该注意,当其中一个值为 null 时,它可能会抛出异常。为避免这种情况,请使用以下内容:

var value = reader.GetValue(reader.GetOrdinal(dbColumn));
var item = value == null ? string.Empty : value.ToString();

关于c# - 使用 C# Sql Reader 从 SQL Server 表中检索日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com