C#数据库保存添加换行符到日期时间

时间:2015-09-02 14:25:22

标签: c# sql-server tsql datetime

我遇到一个问题,ExecuteScalar向数据库发送了几个datetime参数,我收到错误

  

无效的施法nvarchar到日期时间

SQL Server Profiler显示datetime在日期中间有换行符,如下所示:

@inspection_start='2015-09-10 /n
00:00:00',

我检查过所有数据类型都是正确的。

有谁知道什么会导致这个问题?

谢谢

3 个答案:

答案 0 :(得分:1)

首先,

  

无效的施法nvarchar到日期时间

告诉我您发送了string而不是DateTime,如果您在SQL中声明@inspection_startDateTime,那么这应该适用于你:

// 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
)

类型绝对是日期时间。调试器显示应该是的日期时间。只是一个简单的日期时间