C# C数据库保存将换行符添加到datetime
我面临一个问题,ExecuteScalar正在向数据库发送一些日期时间参数,但我得到一个错误 对日期时间的强制转换nvarchar无效C# C数据库保存将换行符添加到datetime,c#,sql-server,tsql,datetime,C#,Sql Server,Tsql,Datetime,我面临一个问题,ExecuteScalar正在向数据库发送一些日期时间参数,但我得到一个错误 对日期时间的强制转换nvarchar无效 SQLServer事件探查器显示DATETIME在日期中间有这样的行中断: @inspection_start='2015-09-10 /n 00:00:00', 我检查了所有数据类型是否正确 有人知道是什么导致了这个问题吗 谢谢如果其数据类型为字符串,请尝试删除/替换“\n”字符。你能粘贴你如何传递参数和调用ExecuteScalar方法的代码吗 对日期时间
SQLServer事件探查器显示DATETIME在日期中间有这样的行中断:
@inspection_start='2015-09-10 /n
00:00:00',
我检查了所有数据类型是否正确
有人知道是什么导致了这个问题吗
谢谢如果其数据类型为字符串,请尝试删除/替换“\n”字符。你能粘贴你如何传递参数和调用ExecuteScalar方法的代码吗 对日期时间的强制转换nvarchar无效 告诉我您发送的是字符串而不是日期时间,如果您在SQL中将@inspection\u start声明为日期时间,那么这应该适用于您:
// oldInspection_start is the var you already have (inspection_start)
// with the line break (\n)
string oldInspection_start = "2015-09-10 /n 00:00:00";
string newInspection_start = oldInspection_start.Replace("/n", string.Empty);
yourCommand.Parameters.AddWithValue("@inspection_start", Convert.ToDateTime(newInspection_start));
您的代码应该是类似的,所以只需根据需要更改它即可我的变量声明
public DateTime? InspectionStart
这就是我所说的程序
int newid = 0;
try
{
Database db = DatabaseFactory.CreateDatabase();
newid = (int)db.ExecuteScalar(
StoredProcedures.SaveInspectionPortNewReport,
inspection.InspectionStart)
}
这就是我在sql中接收它的方式
ALTER PROCEDURE [dbo].[inspection_port_new_reports_save](
@inspection_start datetime
)
类型肯定是日期时间。调试器将日期时间显示为它应该显示的日期时间。只是一个简单的日期时间可能共享一些代码…?好的,数据类型是正确的。您在nvarchar中有一个换行符。不会强制转换为datetime。数据类型不正确。您有datetime数据,但出于某些奇怪的原因,您将其作为字符串nvarchar传递,从而为您所描述的问题带来机会。如果您将此数据作为日期时间数据传递,则不会出现问题。@Damien_the_Unsiever OP声明向数据库发送一些日期时间参数。@Frisbee-是的,但它们显然不发送日期时间参数,因为它们不可能包含换行符。如果他们发送datetime参数,如datetimes,则它们将以二进制blob的形式出现。