gpt4 book ai didi

c# - C#(或薛定谔的数据类型)的正确转换和转换

转载 作者:行者123 更新时间:2023-11-30 14:02:50 25 4
gpt4 key购买 nike

这可能是一个基本的 C# 问题,但我来自 C/C++ 背景。

我正在编写一个应用程序,它从 Sql Server 数据库中获取单个日期值。我遇到的问题是,当数据库通过 sqlcommand 读取器读取数据时,我收到一条错误消息:

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

奇怪的是,GetString(0) 似乎在运行时返回 DateTime。

但是,据我所知,我无法将表达式转换为 DateTime。如何从表达式中获取 DateTime 对象,或将此表达式转换为 C# 字符串?这是我的代码:

static public string GetSqlString(string SQLText) 
{
string result = "";
SqlDataReader reader;

SqlConnection connection = new SqlConnection("Data Source=DEVDB\\SQLEXPRESS;" +
"Initial Catalog=TestDB;" +
"Trusted_Connection=Yes;");
using (connection) {
SqlCommand sqlcommand = connection.CreateCommand();
sqlcommand.CommandText = SQLText;
connection.Open();
reader = sqlcommand.ExecuteReader();
if (reader != null)
if (reader.Read())
{
// Code breaks on this Line
result = reader.GetString(0);
//////////////////////////////////////////////////////
// This doesn't seem to work either:
result = (DateTime)(reader.GetString(0)).ToShortDateString;
// Visual Studio states that this reader.GetString is a string,
// oddly enough...
}
else
{
// Purposely Bogus Value
result = "01/01/1920";
}
connection.Close();
}
return result;
}


static public DateTime GetCurrentDateDB()
{
string dateString;
dateString = GetSqlString("SELECT [ViewingDate] FROM [TestDB].[dbo].[AppGlobals] as varchar");
DateTime ComputedDate = DateTime.Parse(dateString);
return ComputedDate;
}

我的查询结果,来自 SQL Server Managment Studio:

ViewingDate
2010-05-17 00:00:00.000

最佳答案

GetString 是一种类型安全的方法,可以获取您知道是字符串的列。

使用 GetValue(0) 获取一个对象,您可以将其转换为您需要的任何对象。

如果您只是寻找默认的字符串表示形式,请使用 GetValue(0).ToString()

String.Format("{0:d}", reader.GetValue(0)); 是另一种方法。

((DateTime)reader.GetValue(0)).ToShortDateString(); 应该与其他人建议的解决方案完全相同。 GetDateTime(0) 调用为您进行转换。这就是 GetString 出错的原因,因为它试图转换为 String。

关于c# - C#(或薛定谔的数据类型)的正确转换和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073609/

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