C# Timespan输入字符串的格式不正确

C# Timespan输入字符串的格式不正确,c#,asp.net,sql-server-2008-r2,C#,Asp.net,Sql Server 2008 R2,我正在用Asp.Net(Framework4.0)做一个网站,使用SQLServer2008R2 我的数据库字段名“RegisterTime”和数据类型为时间(7) 在插入数据库时,我使用了TimeSpan time=DateTime.Now.TimeOfDay它插入成功 当我试图使用时间作为输入方法检索我的id时,它会给出错误信息,输入字符串的格式不正确 代码如下 cmd = new SqlCommand("SELECT OrderId FROM tbl_Orders WHERE Use

我正在用Asp.Net(Framework4.0)做一个网站,使用SQLServer2008R2

我的数据库字段名“RegisterTime”和数据类型为时间(7)

在插入数据库时,我使用了
TimeSpan time=DateTime.Now.TimeOfDay它插入成功

当我试图使用时间作为输入方法检索我的id时,它会给出错误信息,输入字符串的格式不正确

代码如下

 cmd = new SqlCommand("SELECT OrderId  FROM tbl_Orders WHERE UserId ='" + Convert.ToInt32(Session["UserId"].ToString()) + "' And RegisterTime='" + time.ToString(@"hh\:mm\:ss.ff") + "'", con);
 con.Open();
 dr = cmd.ExecuteReader();
 if (dr.HasRows)
 {
    orderid = ""; 
    orderid = dr["OrderId"].ToString();
 }
添加
CultureInfo ci=CultureInfo.InvariantCulture时
出错


你应该像这样试一下

CultureInfo ci = CultureInfo.InvariantCulture;
"' And RegisterTime='" + time.ToString("hh:mm:ss.ff",ci) + "'", con);
对于.NET4.0,有一种方法可以恢复TimeSpan的旧行为

在.NET3.5及更早版本中,
TimeSpan
结构不是
IFormattable
。当
string.Format
和相关方法看到类似
{0:something}
的内容,并且提供的参数不是
IFormattable
时,它们无处放置该格式字符串,只需丢弃它。

试试这个

cmd = new SqlCommand("SELECT OrderId  FROM tbl_Orders WHERE UserId ='" + Convert.ToInt32(Session["UserId"].ToString()) + "' And RegisterTime='" + time.ToString(@"hh\:mm\:ss\.ff") + "'", con);
在你的代码中,有一个输入错误

time.ToString(@"hh\:mm\:ss.ff") to time.ToString(@"hh\:mm\:ss\.ff")

希望有帮助。

您的代码给出错误“用户代码未处理格式异常”。输入字符串的格式不正确。请查看链接以解决问题。我仔细查看了您提供的链接。我已经根据链接进行了更改,但仍然给出了错误。