Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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#winforms)_C# - Fatal编程技术网

显示日期(c#winforms)

显示日期(c#winforms),c#,C#,我有一个包含以下列的SQL表: PROFILE ---------------------------------- Name | DateOfBirth | Address | ID ---------------------------------- | | | | | | [Name]是必填字段,而ID是自动递增列。 其余字段不是必需的 在我的表单中再次显示用户信息时,由于不需要DateO

我有一个包含以下列的SQL表:

PROFILE
----------------------------------
Name | DateOfBirth | Address | ID
----------------------------------
     |             |         |
     |             |         |
[Name]
是必填字段,而
ID
自动递增列。
其余字段不是必需的

在我的表单中再次显示用户信息时,由于不需要DateOfBirth字段,因此我总是在文本框中获得该值
1900-01-01 00:00:00.000
,即使注册时未提供该值

我想做的是,如果没有出生日期,在文本框中显示一个空字符串

以我天真的想法,我编写了一个方法,首先检查DateOfBirth列,如果为null,它将返回一个空字符串,否则,将出生日期作为字符串返回,例如 但它总是返回值“1900-01-01 00:00:00.000”,因为数据库中的字段总是插入此值,即使用户将此字段保留为空白

你能帮我。。。谢谢

我也试过了,但仍然不起作用:

SELECT BIRTHDATE = CASE BIRTHDATE
            WHEN CAST('1900-01-01' AS DATETIME) THEN '' 
            ELSE BIRTHDATE END
FROM USER

我的心理调试技能告诉我,你在插入行时错误地设置了生日。一个很好的检查方法是连接一个探查器(如果您使用的是SQL Server,那么它附带一个),并观察在创建新用户时实际插入的内容

检查正在插入新用户的代码。例如,如果使用的是数据集,请检查“出生日期”列上是否未设置默认约束(单击“数据集设计器”中的单元格,然后检查“属性”网格)


数据库本身也有可能在该列上设置了默认约束,但这种可能性较小。

我的心理调试技能告诉我,在插入行时,您错误地设置了生日。一个很好的检查方法是连接一个探查器(如果您使用的是SQL Server,那么它附带一个),并观察在创建新用户时实际插入的内容

检查正在插入新用户的代码。例如,如果使用的是数据集,请检查“出生日期”列上是否未设置默认约束(单击“数据集设计器”中的单元格,然后检查“属性”网格)


数据库本身也有可能在该列上设置了默认约束,但这种可能性较小。

您为什么不想这样做

string theDate = GetDateOfBirth().ToString();
txtDateOfBirth.Text = theDate  == "1900-01-01 00:00:00.000" ? "" : theDate;  

你为什么不想这么做

string theDate = GetDateOfBirth().ToString();
txtDateOfBirth.Text = theDate  == "1900-01-01 00:00:00.000" ? "" : theDate;  
我已经拿到了!:)

这是我的原始代码:

protected void SaveUser()
    {
        SqlConnection conn = new SqlConnection(connectionString);
        conn.Open();

        SqlCommand cmd = new SqlCommand("INSERT_USER");
        cmd.Parameters.Add(new SqlParameter("@NAME", txtName.Text.Trim()));
        cmd.Parameters.Add(new SqlParameter("@ADDRESS", txtAddress.Text.Trim()));
        cmd.Parameters.Add(new SqlParameter("@DATEOFBIRTH", txtDateOfBirth.Text.Trim()));
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.ExecuteNonQuery();
    }
在我的原始代码中,即使
txtDateofBirth
为空,它也会向参数传递一个空字符串,导致数据库插入“1900-01-01 00:00:00.00”,而不是
NULL
值。这是修改后的代码。我首先检查
txtDateOfBirth
是否为空(假设输入的值是有效日期),如果为真,则添加
cmd.Parameters.add(新的SqlParameter(@DATEOFBIRTH),txtDateOfBirth.Text.Trim())
作为
插入用户
存储过程的参数。否则,
@DATEOFBIRTH
参数根本不会被创建和传递

protected void SaveUser()
{
    SqlConnection conn = new SqlConnection(connectionString);
    conn.Open();

    SqlCommand cmd = new SqlCommand("INSERT_USER");
    cmd.Parameters.Add(new SqlParameter("@NAME", txtName.Text.Trim()));
    cmd.Parameters.Add(new SqlParameter("@ADDRESS", txtAddress.Text.Trim()));
    if(txtDateOfBirth.Text.Trim() != String.Empty)
        {
            cmd.Parameters.Add(new SqlParameter("@DATEOFBIRTH", txtDateOfBirth.Text.Trim()));
        }
    cmd.Connection = conn;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.ExecuteNonQuery();
}
SP:

我已经拿到了!:)

这是我的原始代码:

protected void SaveUser()
    {
        SqlConnection conn = new SqlConnection(connectionString);
        conn.Open();

        SqlCommand cmd = new SqlCommand("INSERT_USER");
        cmd.Parameters.Add(new SqlParameter("@NAME", txtName.Text.Trim()));
        cmd.Parameters.Add(new SqlParameter("@ADDRESS", txtAddress.Text.Trim()));
        cmd.Parameters.Add(new SqlParameter("@DATEOFBIRTH", txtDateOfBirth.Text.Trim()));
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.ExecuteNonQuery();
    }
在我的原始代码中,即使
txtDateofBirth
为空,它也会向参数传递一个空字符串,导致数据库插入“1900-01-01 00:00:00.00”,而不是
NULL
值。这是修改后的代码。我首先检查
txtDateOfBirth
是否为空(假设输入的值是有效日期),如果为真,则添加
cmd.Parameters.add(新的SqlParameter(@DATEOFBIRTH),txtDateOfBirth.Text.Trim())
作为
插入用户
存储过程的参数。否则,
@DATEOFBIRTH
参数根本不会被创建和传递

protected void SaveUser()
{
    SqlConnection conn = new SqlConnection(connectionString);
    conn.Open();

    SqlCommand cmd = new SqlCommand("INSERT_USER");
    cmd.Parameters.Add(new SqlParameter("@NAME", txtName.Text.Trim()));
    cmd.Parameters.Add(new SqlParameter("@ADDRESS", txtAddress.Text.Trim()));
    if(txtDateOfBirth.Text.Trim() != String.Empty)
        {
            cmd.Parameters.Add(new SqlParameter("@DATEOFBIRTH", txtDateOfBirth.Text.Trim()));
        }
    cmd.Connection = conn;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.ExecuteNonQuery();
}
SP:



请将代码发布在
GetDateOfBirth()
或其等效项之后。另外,当您直接查询表时(假设使用SQL Server,SQL Server Workbench),您在表中看到了什么
SELECT BIRTHDATE FROM USER
。假设用户没有提供他的出生日期:我运行一个简单的SELECT语句:SELECT*FROM users这是结果:USER1 | 1900-01-01 00:00:00.000 | address请将代码发布在
GetDateOfBirth()
,或其等效项后面。另外,当您直接查询时,在表中看到了什么(使用,假设SQL Server,SQL Server Workbench)?
从用户选择出生日期
。假设用户没有提供他的出生日期:我运行一个简单的SELECT语句:SELECT*FROM USERS这是结果:USER1 | 1900-01-01 00:00:00.000 | Addressprivate string ReturnDateOfBirth(){string dateOfBirth=string.Empty;pl.ConnOpen();pl.cmd=new-SqlCommand(“GET_DATEOFBIRTH”,pl.MySQLConn);pl.cmd.Parameters.Add(new-SqlParameter(@ID),(object)txtID.Text.Trim());pl.cmd.CommandType=CommandType.StoredProcedure;pl.dr=pl.cmd.ExecuteReader();if(pl.dr.HasRows){DATEOFBIRTH=pl.dr[“DATEOFBIRTH”].ToString();}pl.MySQLConn.Close();返回出生日期;}@yonan2236:我实际上是建议问题出在insert中,而不是select中。我还将DateOfBirth列设置为Null,并且没有默认约束。但它似乎总是插入'1900-01-01 00:00:00.000'@yonan2236:好的,那么插入该日期的代码看起来是什么样子的呢?CREATE PROC[dbo]。insert_USER(@NAME VARCHAR(25),@DATEOFBIRTH AS DATETIME=NULL,@ADDRESS AS VARCHAR(100)=NULL)AS BEGIN插入到用户(NAME,DATEOFBIRTH,ADDRESS)值(@NAME,@DATEOFBIRTH,@ADDRESS)END GOprivate string ReturnDateOfBirth(){string DATEOFBIRTH=string.Empty;pl.ConnOpen();pl.cmd=new SqlCommand(“GET_DATEOFBIRTH”,pl.MySQLConn);pl.cmd.Parameters.Add(新的SqlParameter(@ID),(object)txtID.Text.Trim());pl.cmd.CommandType=CommandType.storedProcess;pl.dr=pl.cmd.Execut