簡體   English   中英

使用C#SQL Reader從SQL Server表中檢索日期時間值

[英]Retrieve datetime value from SQL Server table using C# Sql Reader

我正在查詢SQL Server表以獲取表中數據類型為datetime的值。

數據庫中的項目是這樣的: 2014-05-17 23:52:09.333

以下代碼引發此異常:

無法將類型為“ System.DateTime”的對象轉換為類型為“ 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;
    }

如何將datetime轉換為字符串?

該列被鍵入為日期時間,因此您必須使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM