我想将表单中的所有数据插入名为Equipment的数据库中。 但是,当我单击保存按钮时,它显示错误“无法将参数值从字符串转换为日期时间。”
我在日期时间类型中设置了某个列的数据类型。我将日历放在文本框中,因此通过单击文本框,它将弹出日历。用户可以选择日期。使用javascript创建的日历。
任何人都知道如何解决这个问题?
The form and the calendar pop up
保存按钮的代码:
A3
javacript代码:
string connectionstring = "Data Source=5CG50749V3\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionstring))
{
string sql = @"INSERT Into [Equipment]([OwnerID],[SubjecttoCal],[Model],[Option],[EquipmentID],[SerialNumber],[Description],[Location],
[DueDate],[EquipmentWithdraworRemarks],[NCRorOOTHistory],[LastOOTissuanceDate],
[AvailableinSapphire],[ResponsiblePerson],[CalibrationOption],[CalibrationSourceorLab],
[YearofManufacturing],[ManufacturerorVendor],[CalibrationCost],[AssetNo],[CalibrationTAT],[SendInDate],[Status])
";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.Parameters.Add("@OwnerID", SqlDbType.NVarChar).Value = TextBox1.Text;
command.Parameters.Add("@SubjecttoCal", SqlDbType.NVarChar).Value = TextBox2.Text;
command.Parameters.Add("@Model", SqlDbType.NVarChar).Value = TextBox3.Text;
command.Parameters.Add("@Option", SqlDbType.NVarChar).Value = TextBox4.Text;
command.Parameters.Add("@EquipmentID", SqlDbType.NVarChar).Value = TextBox5.Text;
command.Parameters.Add("@SerialNumber", SqlDbType.NVarChar).Value = TextBox6.Text;
command.Parameters.Add("@Description", SqlDbType.NVarChar).Value = TextBox7.Text;
command.Parameters.Add("@Location", SqlDbType.NVarChar).Value = DropDownList1.Text;
command.Parameters.Add("@DueDate", SqlDbType.DateTime).Value = TextBox8.Text;
command.Parameters.Add("@EquipmentWithdraworRemarks", SqlDbType.NVarChar).Value = TextBox10.Text;
command.Parameters.Add("@NCRorOOTHistory", SqlDbType.NVarChar).Value = TextBox11.Text;
command.Parameters.Add("@LastOOTissuanceDate", SqlDbType.DateTime).Value = TextBox12.Text;
command.Parameters.Add("@AvailableinSapphire", SqlDbType.NVarChar).Value = TextBox13.Text;
command.Parameters.Add("@ResponsiblePerson", SqlDbType.NVarChar).Value = TextBox14.Text;
command.Parameters.Add("@CalibrationOption", SqlDbType.NVarChar).Value = TextBox15.Text;
command.Parameters.Add("@CalibrationSourceorLab", SqlDbType.NVarChar).Value = TextBox16.Text;
command.Parameters.Add("@YearofManufacturing", SqlDbType.NVarChar).Value = TextBox17.Text;
command.Parameters.Add("@ManufacturerorVendor", SqlDbType.NVarChar).Value = TextBox18.Text;
command.Parameters.Add("@CalibrationCost", SqlDbType.NVarChar).Value = TextBox19.Text;
command.Parameters.Add("@AssetNo", SqlDbType.NVarChar).Value = TextBox20.Text;
command.Parameters.Add("@CalibrationTAT", SqlDbType.NVarChar).Value = TextBox21.Text;
command.Parameters.Add("@SendInDate", SqlDbType.DateTime).Value = TextBox22.Text;
command.Parameters.Add("@Status", SqlDbType.NVarChar).Value = DropDownList2.Text;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Your data have been saved')", true);
}
}
答案 0 :(得分:0)
您需要将日期字符串转换为日期时间格式。例如:
DateTime oDate = DateTime.ParseExact(textboxValue, "MM/dd/yy", null);
//For eg
command.Parameters.Add("@DueDate", SqlDbType.DateTime).Value = DateTime.ParseExact(TextBox8.Text, "MM/dd/yy", null);
顺便说一下,我假设TextBox8.Text
从日期时间选择器返回正确的值。
如果它有效,那么就和其他日期时间文本框做同样的事情
答案 1 :(得分:0)
在查看您的代码时,您将从文本框中的客户端以“dd / MM / yyyy”格式获取日期。 因此,您需要通过以下代码段来解析考虑该格式的日期。
DateTime parsedDate = DateTime.ParseExact("22/3/2017", "dd/MM/yyyy", CultureInfo.InvariantCulture);
对于您的代码,您需要将“textbox.Text”替换为语句“DateTime.ParseExact(textbox.Text,”dd / MM / yyyy“,CultureInfo.InvariantCulture)”,无论您提到数据类型DateTime。
即
command.Parameters.Add("@DueDate", SqlDbType.DateTime).Value = DateTime.ParseExact(TextBox8.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
command.Parameters.Add("@LastOOTissuanceDate", SqlDbType.DateTime).Value = DateTime.ParseExact(TextBox12.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
command.Parameters.Add("@SendInDate", SqlDbType.DateTime).Value = DateTime.ParseExact(TextBox22.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);