Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';由于日期转换,无法插入到我的表中_C#_Asp.net - Fatal编程技术网

C# Can';由于日期转换,无法插入到我的表中

C# Can';由于日期转换,无法插入到我的表中,c#,asp.net,C#,Asp.net,我有一个带有ajax日历扩展器的文本框和一个按钮。当我点击按钮时,它必须触发一个代码,将一条新记录插入到表“Material”中。这是我的文本框代码 <asp:TextBox ID="txtDateDG" runat="server" Height="25px" Width="162px" ontextchanged="txtDateDG_TextChanged" AutoPostBack="true" CssClass="TextBox"></asp:TextB

我有一个带有ajax日历扩展器的文本框和一个按钮。当我点击按钮时,它必须触发一个代码,将一条新记录插入到表“Material”中。这是我的文本框代码

 <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”:我正在使用一个类,其中执行sqlCommande/sqlConnection/DataSet。我这样做是为了避免每次都输入所有的代码。 它给我这个错误“从字符串转换日期和/或时间时转换失败。” 我尝试了这个方法,但仍然显示错误

DateTime dD = convert.toDateTime(txtDateD.Text);
还有这个

dateTime dD = DateTime.ParseExact(dateString, "dd/MM/yyyy", null);

我的表中txtDateD的类型是Date,而不是DateTime

您应该真正使用SQL参数,它将

  • 修复日期转换问题
  • 保护你免受
  • 使用SQL参数将允许您将日期作为
    DateTime
    传递,而不是格式化的
    字符串
    ,最好让框架决定存储所需的格式

    下面是一个使用
    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
        }
    }
    

    什么是充电器?你在这里使用某种ORM吗?我编辑了这个问题,请阅读。请阅读有关SQL注入的内容。除上述内容外,你没有告诉我们你传入的无法转换的字符串值。我说我在txtDateD文本框上使用日历扩展器,因此,我正在从日历中选择一个日期。你能告诉我我是如何尝试的,但它给了我一个错误
    cmd.CommandText=@“插入到装备值(@ST,@PL,@PG,@IDM,@IDT,@IDS,@IDEm,@REP,@IDEN,@DD,@DD)”;cmd.Parameters.AddWithValue(“@ST”,txtServiceTag.Text)在我的表中,@ST是serviceTag,它的类型是Varchar(20),当我点击按钮时,它给了我这个错误,'123F'附近不正确的语法
    
    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
        }
    }