C# MVC-字符串或二进制数据将被截断。\r\n语句已终止
我理解此错误意味着我试图在数据库中插入一个大于允许值的值,但我看不出是哪个值导致了问题 这是我插入数据的地方: 这是数据库表定义: 在调试器中,我使用length命令查看传入值的长度,结果如下: 这是将要输入的数据示例 这是UserActivity类C# MVC-字符串或二进制数据将被截断。\r\n语句已终止,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我理解此错误意味着我试图在数据库中插入一个大于允许值的值,但我看不出是哪个值导致了问题 这是我插入数据的地方: 这是数据库表定义: 在调试器中,我使用length命令查看传入值的长度,结果如下: 这是将要输入的数据示例 这是UserActivity类 根据下面所示的逻辑,我在log.Query_Time中得到一个值00:02:00.0030060,这就是为什么我怀疑这就是您遇到问题的原因。该字符串为16个字符,其中数据库中的查询时间列仅为11个字符 public class UserActiv
根据下面所示的逻辑,我在log.Query_Time中得到一个值00:02:00.0030060,这就是为什么我怀疑这就是您遇到问题的原因。该字符串为16个字符,其中数据库中的查询时间列仅为11个字符
public class UserActivity
{
public string UserEmail { get; set; }
public string SQL_Query { get; set; }
public string Query_Start { get; set; }
public string Query_End { get; set; }
public string Query_Time { get; set; }
}
static void Main(string[] args)
{
UserActivity log = new UserActivity();
DateTime start = DateTime.Now - TimeSpan.FromMinutes(2);
DateTime end = DateTime.Now;
TimeSpan Duration = end - start;
log.UserEmail = "email@here.gov";
log.SQL_Query = "exec FTSP_FTProblemsByCategory 5";
log.Query_Start = String.Format("{0:hh:mm:ss}", start);
log.Query_End = String.Format("{0:hh:mm:ss}", end);
log.Query_Time = String.Format("{0:mm:ss.ff}", Duration.ToString());
}
根据下面所示的逻辑,我在log.Query_Time中得到一个值00:02:00.0030060,这就是为什么我怀疑这就是您遇到问题的原因。该字符串为16个字符,其中数据库中的查询时间列仅为11个字符
public class UserActivity
{
public string UserEmail { get; set; }
public string SQL_Query { get; set; }
public string Query_Start { get; set; }
public string Query_End { get; set; }
public string Query_Time { get; set; }
}
static void Main(string[] args)
{
UserActivity log = new UserActivity();
DateTime start = DateTime.Now - TimeSpan.FromMinutes(2);
DateTime end = DateTime.Now;
TimeSpan Duration = end - start;
log.UserEmail = "email@here.gov";
log.SQL_Query = "exec FTSP_FTProblemsByCategory 5";
log.Query_Start = String.Format("{0:hh:mm:ss}", start);
log.Query_End = String.Format("{0:hh:mm:ss}", end);
log.Query_Time = String.Format("{0:mm:ss.ff}", Duration.ToString());
}
这里的问题是持续时间的格式,我假设这是一个TimeSpan对象。如果您的持续时间为3分45秒210毫秒,则使用您目前的数据,您的查询时间变量设置为:00:03:45.210000 您将希望使用以下字符串而不是当前字符串。格式:
log.Query_Time = Duration.ToString("mm\\:ss\\.ff");
这会给你一个像03:45.21这样的输出,我想这就是你的目标。你这里的问题是持续时间的格式,我假设这是一个TimeSpan对象。如果您的持续时间为3分45秒210毫秒,则使用您目前的数据,您的查询时间变量设置为:00:03:45.210000 您将希望使用以下字符串而不是当前字符串。格式:
log.Query_Time = Duration.ToString("mm\\:ss\\.ff");
这将为您提供一个类似03:45.21的输出,我想这就是您的目标。为什么您要使用varchars作为时间?为什么不直接使用datetime并存储它呢?很明显,其中一项太长,调试它您能否显示UserActivity类定义、Duration变量定义/赋值,并在Query\u Time字段/属性中给出一个值的示例?我怀疑问题可能与查询时间有关。如果我有DateTime start=DateTime.Now-TimeSpan.FromMinutes2;,和DateTime end=DateTime.Now;,时间跨度持续时间=结束-开始;然后设置log.Query_Time=String.Format{0:mm:ss.ff},Duration.ToString然后log.QueryTime等于00:02:00.0030060.Query_Time等于00:00:00,这与开始和结束的字符数相同为什么u使用varchars作为时间?为什么不直接使用datetime并存储它呢?很明显,其中一项太长,调试它您能否显示UserActivity类定义、Duration变量定义/赋值,并在Query\u Time字段/属性中给出一个值的示例?我怀疑问题可能与查询时间有关。如果我有DateTime start=DateTime.Now-TimeSpan.FromMinutes2;,和DateTime end=DateTime.Now;,时间跨度持续时间=结束-开始;然后设置log.Query_Time=String.Format{0:mm:ss.ff},Duration.ToString然后log.QueryTime等于00:02:00.0030060.Query_Time等于00:00:00,这与开始和结束字符数相同
public class UserActivity
{
public string UserEmail { get; set; }
public string SQL_Query { get; set; }
public string Query_Start { get; set; }
public string Query_End { get; set; }
public string Query_Time { get; set; }
}
static void Main(string[] args)
{
UserActivity log = new UserActivity();
DateTime start = DateTime.Now - TimeSpan.FromMinutes(2);
DateTime end = DateTime.Now;
TimeSpan Duration = end - start;
log.UserEmail = "email@here.gov";
log.SQL_Query = "exec FTSP_FTProblemsByCategory 5";
log.Query_Start = String.Format("{0:hh:mm:ss}", start);
log.Query_End = String.Format("{0:hh:mm:ss}", end);
log.Query_Time = String.Format("{0:mm:ss.ff}", Duration.ToString());
}
log.Query_Time = Duration.ToString("mm\\:ss\\.ff");