gpt4 book ai didi

C# DataRow.ToString() 在不应该时自动格式化字符串

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:59 24 4
gpt4 key购买 nike

我已经编程了一段时间,但我从未见过这种情况,所以我对发生的事情感到有点困惑。我正在做的是在数据库上执行一个 SP,只是为了在实际使用它之前测试它的输出,我将行放入管道分隔的字符串中。出于某种原因,当我为这些结果设置一个文本框时,它将 SQL Server 中的日期格式化为 DateTime 变量,并将 1.99 小数格式化为 1.9900 小数。

另请注意:我不想通过按列名调用特定列来访问列数据。我想这样做,以便我可以更改并向数据库中的 SP 添加列,这将继续工作并从 SP 带回所有列。

最后一个日期时间的秒数也不相同,因为查询是在不同的时间运行的,因此无需担心。

有人知道这里发生了什么吗??

这是获取数据并创建竖线分隔字符串的代码:

private string GetHourlySales()
{
StringBuilder output = new StringBuilder();
DataTable tblData = new DataTable();

using (SqlConnection conn = new SqlConnection(GetConnectionString()))
{
string sql = "EXEC [dbo].[ryan_GetSalesSummary] 0";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
try
{
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
tblData.Load(dr, LoadOption.Upsert);
conn.Close();
}
catch (Exception) { }
}
}

foreach (DataRow row in tblData.Rows)
{
for (int i = 0; i < tblData.Columns.Count; i++)
{
if (i > 0)
output.Append("|");
if (i == tblData.Columns.Count - 1)
output.AppendLine(row[i].ToString());
else
output.Append(row[i].ToString());
}
}

if (tblData.Rows.Count > 0)
return output.ToString();
else
return null;
}

这是它创建的输出: incorrect formatting

这是我直接从 SQL Server 得到的: correct formatting

最佳答案

您的数据表不包含您在查询数据库时看到的字符串,它是类型化的,这意味着您具有所选列的实际数据类型。所以 DateTime 的格式将与 DateTime 类似,Decimal 的格式与 Decimal 类似。您看到的是默认行为。

关于C# DataRow.ToString() 在不应该时自动格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140604/

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