我有一个带有ajax日历扩展器的textBox和一个按钮。当我单击按钮时,它必须触发一个代码,将新记录插入“Material”表中。这是我的textBox代码
<asp:TextBox ID="txtDateDG" runat="server" Height="25px" Width="162px"
ontextchanged="txtDateDG_TextChanged" AutoPostBack="true"
CssClass="TextBox"></asp:TextBox>
<asp:CalendarExtender ID="txtDateDG_CalendarExtender" runat="server"
Enabled="True" Format="dd/MM/yyyy" TargetControlID="txtDateDG">
</asp:CalendarExtender>
这是我的按钮代码
con.charger("insert into Materiel values ('" + txtServiceTag.Text + "', '" + txtPeriodeL.Text + "', '" + txtPeriodeG.Text + "','"
+ cmbMarque.SelectedIndex + "','" + cmbDesignation.SelectedIndex + "','" + (cmbSerie.SelectedIndex + 1) + "', NULL, NULL, '" +
cmbEntite.SelectedIndex + "','" + txtDateD.Text + "','" + txtDateF.Text + "')", false);
con.charger("insert into Stocker Values (2, '" + txtServiceTag.Text + "'", false);
“con.charger”:我正在使用一个执行sqlCommande / sqlConnection / DataSet的类。我这样做,只是为了避免每次都输入所有代码。 它给了我这个错误“从字符串转换日期和/或时间时转换失败。” 我试过这个方法,但我仍然显示错误
DateTime dD = convert.toDateTime(txtDateD.Text);
和这个
dateTime dD = DateTime.ParseExact(dateString, "dd/MM/yyyy", null);
我表中的txtDateD类型是Date,而不是DateTime
答案 0 :(得分:1)
你应该使用
的SQL参数使用SQL参数将允许您将日期传递为DateTime
而不是格式化string
,最好让框架决定存储所需的格式。
以下是使用SqlCommand
/ SqlConnection
using (SqlConnection conn = new SqlConnection("connectionString"))
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"INSERT INTO Materiel VALUES (@textParam, @intParam, @dateParam, ...)";
// add parameters
cmd.Parameters.AddWithValue("@textParam", "blah blah");
cmd.Parameters.AddWithValue("@intParam", 12345);
cmd.Parameters.AddWithValue("@dateParam", DateTime.UtcNow);
...
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch(SqlException e)
{
// do something with exception
}
}