C# ASP.NET MVC 4:尝试从输入文本框在Sql Server数据库中插入日期时间字段时收到错误
我正在开发一个web应用程序,它在单击时将数据插入表中的一行。当我尝试将日期插入数据库时,出现以下错误:C# ASP.NET MVC 4:尝试从输入文本框在Sql Server数据库中插入日期时间字段时收到错误,c#,sql-server,ajax,asp.net-mvc,error-handling,C#,Sql Server,Ajax,Asp.net Mvc,Error Handling,我正在开发一个web应用程序,它在单击时将数据插入表中的一行。当我尝试将日期插入数据库时,出现以下错误: System.Data.SqlClient.SqlException was unhandled by user code HResult=-2146232060 Message=Conversion failed when converting date and/or time from character string. Source=.Net SqlClient Data Provid
System.Data.SqlClient.SqlException was unhandled by user code
HResult=-2146232060
Message=Conversion failed when converting date and/or time from character string.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=16
以下字段是Sql Server表格中的日期时间列、e ProfileDate、CheckStartDatetime、LastCheckDate和CheckRecord。但是在模型中,它们是字符串。我怀疑这是否是问题所在,因为当我显示sql表中的信息时,会显示日期
型号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace AlertNotificationWeb.Models
{
public class Task
{
public int ID { get; set; }
public string FunctionName { get; set; }
public string FunctionDesc { get; set; }
public string CheckPeriod { get; set; }
public string Profiledate { get; set; }/*Represented as datetime in sql server table */
public int PeriodDay { get; set; }
public string AlertStatus { get; set; }
public string Comment { get; set; }
public String LastCheckDate { get; set; } /*Represented as datetime in sql server table */
public String CheckStartDatetime { get; set; } /*Represented as datetime in sql server table */
public String CheckRecord { get; set; }/*Represented as datetime in sql server table */
}
}
控制器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.SqlClient;
using AlertNotificationWeb.Models;
using System.Data;
using System.Configuration;
namespace AlertNotificationWeb.Controllers
{
public class TaskController : Controller
{
//
// GET: /Task/
string connectionstring = @"data source=MSSQL4\MIS; initial catalog= datamart2; User ID= support_user; Password= support_user_pass";
public ActionResult Index()
{
List<Task> tasks = new List<Task>();
string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
string query = "SELECT [ID],[GroupSubsidiary],[FunctionName],[FunctionDesc],[CheckPeriod],[Profiledate],[AlertStatus], [CheckStartDatetime], [LastCheckDate] ,[Comment], [CheckRecord] FROM [datamart2].[dbo].[AS2_AlertsResults]";
using (SqlConnection sqlcon = new SqlConnection(constr))
{
using (SqlCommand sqlcmd = new SqlCommand(query))
{
sqlcon.Open();
sqlcmd.Connection = sqlcon;
using (SqlDataReader sdr = sqlcmd.ExecuteReader())
{
while (sdr.Read())
{
tasks.Add(new Task
{
ID = Convert.ToInt32(sdr["ID"]),
GroupSubsidiary = Convert.ToString(sdr["GroupSubsidiary"]),
FunctionName = Convert.ToString(sdr["FunctionName"]),
FunctionDesc = Convert.ToString(sdr["FunctionDesc"]),
CheckPeriod = Convert.ToString(sdr["CheckPeriod"]),
Profiledate = Convert.ToString(sdr["Profiledate"]),
AlertStatus = Convert.ToString(sdr["AlertStatus"]),
CheckStartDatetime = Convert.ToString(sdr["CheckStartDatetime"]),
LastCheckDate = Convert.ToString(sdr["LastCheckDate"]),
Comment = Convert.ToString(sdr["Comment"]),
CheckRecord = Convert.ToString(sdr["CheckRecord"])
});
}
}
}
sqlcon.Close();
}
return View(tasks);
}
[HttpPost]
public ActionResult UpdateTask(Task task)
{
//string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
string query = "UPDATE AS2_AlertsResults SET AlertStatus= @AlertStatus, Comment= @Comment WHERE ProfileDate= @ProfileDate";
using (SqlConnection sqlcon = new SqlConnection(connectionstring))
{
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand(query, sqlcon);
sqlcmd.Parameters.AddWithValue("@ProfileDate", task.Profiledate);
sqlcmd.Parameters.AddWithValue("@AlertStatus", task.AlertStatus );
sqlcmd.Parameters.AddWithValue("@Comment", task.Comment );
sqlcmd.Connection = sqlcon;
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
}
return new EmptyResult();
}
public ActionResult ArchiveResults(Task task)
{
string query = " INSERT INTO AS2_AlertsResultsArchive(ID ,ProfileDate, GroupSubsidiary, FunctionName, FunctionDesc, CheckPeriod, CheckStartDatetime, LastCheckDate, AlertStatus, Comment, CheckRecord) VALUES (@ID,@ProfileDate, @GroupSubsidiary, @FunctionName, @FunctionDesc,@CheckPeriod, @CheckStartDatetime, @LastCheckDate, @AlertStatus, @Comment, @CheckRecord)";
using (SqlConnection sqlcon = new SqlConnection(connectionstring))
{
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand(query,sqlcon);
sqlcmd.Parameters.AddWithValue("@ID", task.ID);
sqlcmd.Parameters.AddWithValue("@ProfileDate", DateTime.Parse(task.Profiledate));
sqlcmd.Parameters.AddWithValue("@GroupSubsidiary", task.GroupSubsidiary);
sqlcmd.Parameters.AddWithValue("@FunctionName", task.FunctionName);
sqlcmd.Parameters.AddWithValue("@FunctionDesc", task.FunctionDesc);
sqlcmd.Parameters.AddWithValue("@CheckPeriod", task.CheckPeriod);
sqlcmd.Parameters.AddWithValue("@AlertStatus", task.AlertStatus);
sqlcmd.Parameters.AddWithValue("@CheckStartDatetime", DateTime.Parse(task.CheckStartDatetime));
sqlcmd.Parameters.AddWithValue("@LastCheckDate", DateTime.Parse(task.LastCheckDate));
sqlcmd.Parameters.AddWithValue("@Comment", task.Comment);
sqlcmd.Parameters.AddWithValue("@CheckRecord", DateTime.Parse(task.CheckRecord));
sqlcmd.Connection = sqlcon;
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
}
return new EmptyResult();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用System.Data.SqlClient;
使用AlertNotificationWeb.Models;
使用系统数据;
使用系统配置;
命名空间AlertNotificationWeb.Controller
{
公共类TaskController:控制器
{
//
//获取:/Task/
字符串连接字符串=@“数据源=MSSQLS4\MIS;初始目录=datamart2;用户ID=support\u User;密码=support\u User\u pass”;
公共行动结果索引()
{
列表任务=新列表();
string constr=ConfigurationManager.ConnectionString[“DefaultConnection”].ConnectionString;
string query=“从[datamart2].[dbo].[AS2_AlertsResults]中选择[ID]、[GroupSubsidiant]、[FunctionName]、[FunctionDesc]、[CheckPeriod]、[Profiledate]、[AlertStatus]、[CheckStartDatetime]、[LastCheckDate]、[Comment]、[CheckRecord]”;
使用(SqlConnection sqlcon=newsqlconnection(constr))
{
使用(SqlCommand sqlcmd=newsqlcommand(query))
{
sqlcon.Open();
sqlcmd.Connection=sqlcon;
使用(SqlDataReader sdr=sqlcmd.ExecuteReader())
{
while(sdr.Read())
{
任务。添加(新任务)
{
ID=转换为32(sdr[“ID”]),
GroupSubsidiary=Convert.ToString(sdr[“GroupSubsidiary”]),
FunctionName=Convert.ToString(sdr[“FunctionName”]),
FunctionDesc=Convert.ToString(sdr[“FunctionDesc”]),
CheckPeriod=Convert.ToString(sdr[“CheckPeriod”]),
Profiledate=Convert.ToString(sdr[“Profiledate”]),
AlertStatus=Convert.ToString(sdr[“AlertStatus”]),
CheckStartDatetime=Convert.ToString(sdr[“CheckStartDatetime”]),
LastCheckDate=Convert.ToString(sdr[“LastCheckDate”]),
Comment=Convert.ToString(sdr[“Comment”]),
CheckRecord=Convert.ToString(sdr[“CheckRecord”])
});
}
}
}
sqlcon.Close();
}
返回视图(任务);
}
[HttpPost]
公共操作结果更新任务(任务)
{
//string constr=ConfigurationManager.ConnectionString[“DefaultConnection”].ConnectionString;
string query=“UPDATE AS2\u AlertsResults SET AlertStatus=@AlertStatus,Comment=@Comment,其中ProfileDate=@ProfileDate”;
使用(SqlConnection sqlcon=newsqlconnection(connectionstring))
{
sqlcon.Open();
SqlCommand sqlcmd=新的SqlCommand(查询,sqlcon);
sqlcmd.Parameters.AddWithValue(“@ProfileDate”,task.ProfileDate);
sqlcmd.Parameters.AddWithValue(“@AlertStatus”,task.AlertStatus);
sqlcmd.Parameters.AddWithValue(“@Comment”,task.Comment);
sqlcmd.Connection=sqlcon;
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
}
返回新的EmptyResult();
}
公共行动结果归档结果(任务)
{
string query=“插入AS2_AlertsResultsArchive(ID、ProfileDate、GroupSubsidiary、FunctionName、FunctionDesc、CheckPeriod、CheckStartDatetime、LastCheckDate、AlertStatus、Comment、CheckRecord)值(@ID、@ProfileDate、@GroupSubsidiary、@FunctionName、@FunctionDesc、@CheckPeriod、@CheckStartDatetime、@LastCheckDate、@AlertStatus、@Comment、@CheckRecord)”;
使用(SqlConnection sqlcon=newsqlconnection(connectionstring))
{
sqlcon.Open();
SqlCommand sqlcmd=新的SqlCommand(查询,sqlcon);
sqlcmd.Parameters.AddWithValue(“@ID”,task.ID);
sqlcmd.Parameters.AddWithValue(“@ProfileDate”,DateTime.Parse(task.ProfileDate));
sqlcmd.Parameters.AddWithValue(“@groupsubstance”,task.groupsubstance);
sqlcmd.Parameters.AddWithValue(“@FunctionName”,task.FunctionName);
sqlcmd.Parameters.AddWithValue(“@FunctionDesc”,task.FunctionDesc);
sqlcmd.Parameters.AddWithValue(“@CheckPeriod”,task.CheckPeriod);
sqlcmd.Parameters.AddWithValue(“@AlertStatus”,task.AlertStatus);
sqlcmd.Parameters.AddWithValue(“@CheckStartDatetime”,DateTime.Parse(task.CheckStartDatetime));
sqlcmd.Parameters.AddWithValue(“@LastCheckDate”,DateTime.Parse(task.LastCheckDate));
sqlcmd.Parameters.AddWithValue(“@Comment”,task.Comment);
sqlcmd.Parameters.AddWithValu
@using AlertNotificationWeb.Models
@model IEnumerable<Task>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Tasks List</title>
<link href="~/Content/Tablestyles.css" rel="stylesheet" />
<script src="~/Scripts/jquery-ui-1.8.20.min.js"></script>
</head>
<body>
<table id="tblTask" class="table" >
<tr>
<th>ID</th>
<th>GroupSubsidiary</th>
<th>FunctionName</th>
<th>FunctionDesc</th>
<th>CheckPeriod</th>
<th>Profiledate</th>
<th>CheckStartDatetime</th>
<th>LastCheckDate</th>
<th>AlertStatus</th>
<th>Comment</th>
<th>Status Updated</th>
</tr>
@foreach (Task task in Model)
{
<tr>
<td class="taskID">
<span>@task.ID</span>
</td>
<td class="GroupSub">
<span>@task.GroupSubsidiary</span>
</td>
<td class="Fname">
<span>@task.FunctionName</span>
</td>
<td class="Fdesc">
<span>@task.FunctionDesc</span>
</td>
<td class="Checkp">
<span>@task.CheckPeriod</span>
</td>
<td class="Pdate">
<span>@task.Profiledate</span>
</td>
<td class="checkstartdate">
<span>@task.CheckStartDatetime</span>
</td>
<td class="lastcheckdate">
<span>@task.LastCheckDate</span>
</td>
<td class="Status">
@if(task.AlertStatus.IsEmpty()) {
<input type="checkbox" value="NULL" id="checker" />
}else{
<input type="checkbox" value="OK" id="checker2" checked/>
}
</td>
<td class="Comment">
<span>@task.Comment</span>
<input type="text" value="@task.Comment" id="comz" style="display:none" />
</td>
<td class="CheckRecord">
<input type="text" id="crecords" value="@task.CheckRecord" />
</td>
<td>
<a class="Save" href="javascript:;">Save</a>
<a class="Archive" href="javascript:;">Archive</a>
<a class="Cancel" href="javascript:;" style="display:none">Cancel</a>
</td>
</tr>
}
</table>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script type="text/javascript">
//editing tasklist
$("body").on("click", "#tblTask td", function () {
var row = $(this).closest("tr");
$("td", row).each(function () {
if ($(this).find("input").length > 0) {
$(this).find("input").show();
$(this).find("span").hide();
}
});
});
//updating tasklist
$("body").on("click", "#tblTask .Save", function () {
var row = $(this).closest("tr");
$("td", row).each(function () {
if ($(this).find("input").length > 0) {
var span = $(this).find("span");
var input = $(this).find("input");
span.html(input.val());
}
});
row.find(".Edit").show();
row.find(".Delete").hide();
row.find(".Cancel").hide();
//$(this).hide();
//finding html elements
var alertval = $("#checker").val();
var comval = $("#comz").val();
var task = JSON.stringify({
//ID: row.find(".taskID").find("span").html(),
//GroupSubsidiary: row.find(".GroupSub").find("span").html(),
//FunctionName: row.find(".Fname").find("span").html(),
//FunctionDesc: row.find(".Fdesc").find("span").html(),
//CheckPeriod: row.find(".Checkp").find("span").html(),
Profiledate: row.find(".Pdate").find("span").html(),
//PeriodDay: row.find(".Pday").find("span").html(),
AlertStatus: row.find(".Status").find("input").val(),
Comment: row.find(".Comment").find("span").html(),
});
$.ajax({
type: 'POST',
url: "@Url.Action("UpdateTask","Task")",
data: task,
contentType: "application/json",
dataType: "json",
success: function () {
alert("Updated Sucessfully");
},
error: function () {
alert("An Error Occured");
}
});
console.log(task);
});
$("body").on("click", "#tblTask .Status", function () {
var timeclick = GetTodayDate();
var row = $(this).closest("tr");
$("td", row).each(function () {
var ass = row.find(".Status").find("input");
var cm = row.find(".Comment").find("input");
var dt = row.find(".CheckRecord").find("input");
if ($(ass).prop("checked") == true) {
ass.val("OK");
cm.val("OK");
dt.val(timeclick);
} else if ($(ass).prop("checked") == false) {
ass.val(null);
cm.val("Unchecked")
//row.find(".Status").find("span").html("Unchecked");
}
});
});
function GetTodayDate() {
var today = new Date() ;
var dd= today.getDate();
var mm= today.getMonth();
var yyyy = today.getFullYear();
var hh = today.getHours();
var min = today.getMinutes();
var ss = today.getSeconds();
var ms = today.getMilliseconds();
var current = (mm + 1) + "/" + dd + "/" + yyyy+ " " + hh + ":" + min + ":" + ss + "." + ms;
return current;
}
$("body").on("click", "#tblTask .Archive", function () {
var row = $(this).closest("tr");
$("td", row).each(function () {
if ($(this).find("input").length > 0) {
var span = $(this).find("span");
var input = $(this).find("input");
span.html(input.val());
}
})
row.find(".Edit").show();
row.find(".Delete").hide();
row.find(".Cancel").hide();
//$(this).hide();
//finding html elements
var alertval = $("#checker").val();
var comval = $("#comz").val();
var task = JSON.stringify({
ID: row.find(".taskID").find("span").html(),
GroupSubsidiary: row.find(".GroupSub").find("span").html(),
FunctionName: row.find(".Fname").find("span").html(),
FunctionDesc: row.find(".Fdesc").find("span").html(),
CheckPeriod: row.find(".Checkp").find("span").html(),
Profiledate: row.find(".Pdate").find("span").html(),
PeriodDay: row.find(".Pday").find("span").html(),
AlertStatus: row.find(".Status").find("input").val(),
CheckStartDatetime: row.find(".checkstartdate").find("span").html(),
LastCheckDate: row.find(".lastcheckdate").find("span").html(),
Comment: row.find(".Comment").find("span").html(),
CheckRecord: row.find(".CheckRecord").find("input").val(),
});
$.ajax({
type: 'POST',
url: "@Url.Action("ArchiveResults","Task")",
data: task,
contentType: "application/json",
dataType: "json",
success: function () {
alert("Updated Sucessfully");
},
error: function () {
alert("An Error Occured");
}
});
console.log(task);
});
</script>
</body>
</html>