gpt4 book ai didi

c# - 如果我以 dd-MM-yyyy 格式传递日期,则将 yyyy-MM-dd 格式的日期保存到 SQL Server 2008

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:27 25 4
gpt4 key购买 nike

我正在尝试将日期保存到 SQL Server 2008 数据库中。我已将日期转换为 dd/MM/yyyy 格式,即使日期在数据库中存储为 yyyy-MM-dd 格式。我的按钮点击代码:

protected void Submit_Click(object sender, EventArgs e)
{
DateTime fdate = DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
sample = fdate;
}

public class sample
{
public string sample(DateTime fdate)
{
string qry = "insert into sample values('"+fdate+"')";
SqlDataReader dr = conn.query(qry);
}
}

数据库日期(列)数据类型是日期。我可以知道原因吗??
我的其他类(class)

  public class Connection
{
SqlConnection conn;
SqlCommand cmd;
public SqlDataAdapter ad;
public DataTable dt = new DataTable();

public void connclose()
{
conn.Close();
}
public Connection()
{

conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
cmd = null;
}
//------------------ connection string---------------------------------------------------------
---------------------//
public string nonquery(string qry)
{
string str;
if (conn.State == ConnectionState.Open)
{
conn.Close();
}

conn.Open();

cmd=new SqlCommand(qry, conn);
str=cmd.ExecuteNonQuery().ToString();
conn.Close();
return str;

}

public SqlDataReader query(string qry)
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}

conn.Open();

cmd = new SqlCommand(qry, conn);
SqlDataReader dr = cmd.ExecuteReader();
return dr;
}

最佳答案

首先,Sql Server 根本不会以 yyyy-MM-dd 格式存储您的数据。它以人类不可读的二进制格式存储日期,并且仅将它们转换为您在查询工具中看到的方便格式。如果您在考虑格式,那您就已经做错了。你需要这样做:

public string sample(DateTime fdate)
{
string qry = "insert into sample values( @date )";
using (var cn = new SqlConnection("connection string here") )
using (var cmd = new SqlCommand(qry, cn))
{
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = fdate;

cn.Open();
using (var dr = cmd.ExecuteReader())
{
//use dr here...
}
}
}

当然,您有那个 conn 对象,它看起来像是有代码来帮助您避免一些样板文件。这很好,但是您需要更新该对象,以便它的 query() 方法需要的不仅仅是一个 sql 字符串。它必须还具有某种机制来接受与 sql 命令分开的参数数据。否则,您不仅会遇到这样的日期转换问题;您还会发现自己试图弄清楚您的数据库是如何被黑的。

关于c# - 如果我以 dd-MM-yyyy 格式传递日期,则将 yyyy-MM-dd 格式的日期保存到 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27477933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com