将TextBox数据另存为DateTime到SQL数据库的问题

时间:2018-10-18 04:10:09

标签: c# asp.net sql-server datetime

基本上,我将FormView与ItemTemplate和EditItemTemplate控件一起使用。加载数据工作正常(通过DataSource绑定),当我单击编辑(现在进入EditItemTemplate控件)时,它运行良好,但是当我单击“保存”时,出现以下错误:

  

无法将值NULL插入表'dyswis.dbo.tbl_students'的'graduation_date'列中;列不允许为空。更新失败

当文本框中有一个值时,我不明白为什么它为null。其他表单字段可以正常工作。我怀疑这与日期的格式甚至文本模式有关。

ASP.NET:

<asp:TextBox ID="txtGradDate" 
     Text='<%#((DateTime)Eval("graduation_date")).ToString("yyyy-MM-dd") %>' 
     CssClass="form-control" TextMode="Date" runat="server"></asp:TextBox>

数据源:

<UpdateParameters>
    <asp:Parameter Name="id" Type="Int16" />
    <asp:Parameter Name="email" Type="String" />
    <asp:Parameter Name="first_name" Type="String" />
    <asp:Parameter Name="last_name" Type="String" />
    <asp:Parameter Name="university" Type="String" />
    <asp:Parameter Name="program" Type="String" />
    <asp:Parameter Name="student_number" Type="String" /><
    <asp:Parameter Name="graduation_date" Type="DateTime" />
    <asp:Parameter Name="student_card_image_name" Type="String" />
    <asp:Parameter Name="id_card_image_name" Type="String" />
</UpdateParameters>

SQL Server存储过程:

CREATE PROCEDURE [dbo].[student_update]
    @id INT,
    @university VARCHAR(200),
    @program VARCHAR(200),
    @student_number VARCHAR(50),
    @graduation_date DATETIME,
    @student_card_image_name VARCHAR(500) = NULL,
    @id_card_image_name VARCHAR(500) = NULL
AS
    UPDATE tbl_students 
    SET university = @university, 
        program = @program, 
        student_number = @student_number, 
        graduation_date = @graduation_date 
    WHERE 
        user_id = @id

SQL Server表定义:

graduation_date DATETIME

2 个答案:

答案 0 :(得分:1)

您需要从import java.util.*; public class trycatch { public static void main(String args[]) { Scanner sc=new Scanner(System.in); String a; System.out.println("\n\nEnter the name"); try { a=sc.nextLine(); System.out.println("You name is "+a); } catch(InputMismatchException b) { System.out.println("There is problem with your input"); } } } 中获取graduation_date字段的值。 可以使用TextBox

获取该值并将其添加到UpdateParameters的列表中
ControlParameter

答案 1 :(得分:1)

需要通过ControlParameter引用文件,如下所示:

如果您的FormView ID是“ formView”,而textBox ID是txtGradDate。

<asp:ControlParameter Name="graduation_date" ConvertEmptyStringToNull="true" Type="DateTime" ControlID="formView$txtGradDate" PropertyName="Text" />