我遇到一个问题,ExecuteScalar
向数据库发送了几个datetime
参数,我收到错误
无效的施法nvarchar到日期时间
SQL Server Profiler显示datetime
在日期中间有换行符,如下所示:
@inspection_start='2015-09-10 /n
00:00:00',
我检查过所有数据类型都是正确的。
有谁知道什么会导致这个问题?
谢谢
答案 0 :(得分:1)
首先,
无效的施法nvarchar到日期时间
告诉我您发送了string
而不是DateTime
,如果您在SQL中声明@inspection_start
为DateTime
,那么这应该适用于你:
// 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));
您的代码应该类似,因此只需根据需要进行更改
答案 1 :(得分:0)
如果其数据类型为字符串,请尝试删除/替换' \ n'字符。你可以粘贴代码传递参数和调用ExeculteScalar方法。
答案 2 :(得分:-1)
我对变量的声明
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
)
类型绝对是日期时间。调试器显示应该是的日期时间。只是一个简单的日期时间