[英]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
,無論數據庫中的正確類型是什么,都可以使用GetValue
和ToString
方法調用來實現:
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.