由于日期转换,无法插入我的表格

时间:2014-07-09 15:02:34

标签: c# asp.net

我有一个带有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

1 个答案:

答案 0 :(得分:1)

你应该使用

的SQL参数
  1. 修正日期转换问题
  2. 保护您免受SQL Injection
  3. 的侵害

    使用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
        }
    }