【问题标题】:SET Parameter DateTime设置参数日期时间
【发布时间】:2015-07-21 00:52:26
【问题描述】:

我需要设置参数日期以在 SQL Server 表上进行比较。

他会在哪里加上鱼的QUANTIDADE和重量。

但是给了这个错误并且陷入困境并且无法设置它。

DATA_REGISTRO 是 SQL Server 中的 Date 数据类型。

代码:

 public void Search_DATE(string param_date)
 {
        SqlDataReader objReader;
        SqlCommand objcmd = null;

        vsql = "SELECT [IDCADASTRO],[RGP],[PEIXE],[PESO],[QUANTIDADE],[DATA_REGISTRO] FROM cadastro WHERE DATA_REGISTRO LIKE @DATA_REGISTRO";

        if (this.Conectar())
        {
            try
            {
                objcmd = new SqlCommand(vsql, objCon);
                objcmd.Parameters.Add(new SqlParameter("@DATA_REGISTRO", param_date));
                objReader = objcmd.ExecuteReader();

                if (objReader.Read())
                {
                    valor.retorna_date_time = objReader.GetDateTime(5).ToString;

                }

            }
            catch (SqlException erro)
            {
                throw erro;
            }
            finally
            {
                this.Desconectar();
            }
}

全局变量

private static string date_time;

public string retorna_date_time
{
    get { return date_time; }
    set { date_time = value; }
}

【问题讨论】:

    标签: c# sql .net sql-server parameters


    【解决方案1】:

    DATA_REGISTRO 是 SQL 上的日期类型

    但是,您提供的是字符串参数

    public string retorna_date_time
    objcmd.Parameters.Add(new SqlParameter("@DATA_REGISTRO", param_date));
    

    相反,提供一个 DateTime 参数

    DateTime dtParam = DateTime.Parse(param_date);
    objcmd.Parameters.Add(new SqlParameter("@DATA_REGISTRO", dtParam));
    

    另外,除非你会处理它,否则捕获异常不是一个好主意

    catch (SqlException erro)
    {
        throw erro;
    }
    

    我知道您可能有该行用于调试,但请从您的最终代码中删除它,除非您可以对异常执行一些操作。

    【讨论】:

    • 嗯,好吧。更多关于 valor.retorna_date_time = objReader.GetDateTime(5).ToString 的 ID; 5 对吗?
    • GetDateTime(5) 返回 QUANTIDADE 列,因为这是查询中的第 5 列。使用objReader.GetDateTime(objReader.GetOrdinal("QUANTIDADE")).ToString() 更安全,因为它会在运行时找出 QUANTIDATE 的列号。如果您在查询中添加或删除列,则不会有任何问题。
    • 您好,我尝试了您推荐的方式。错误:FormatException 未处理。将字符串转换为 DateTime 时,在将每个变量放入 de DateTime 对象之前解析字符串以获取日期。我需要获取 SQL 的日期字符串以与其他日期时间字符串进行比较。
    • FormatException 意味着字符串中的任何内容都不能使用您的语言环境设置解释为 DateTime。字符串中到底是什么?
    • 那部分我已经打包好了。现在我在示例中做了你只给了我这个返回我的 valor.retorna_date_time “”你能告诉我为什么吗?
    【解决方案2】:

    通过Date你们param_date

    objcmd.Parameters.Add(new SqlParameter("@DATA_REGISTRO", Convert.ToDateTime(param_date).Date));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 2022-06-14
      • 1970-01-01
      • 2018-11-01
      相关资源
      最近更新 更多