2015-07-21 146 views
-1

我需要在SQL Server表上设置比较的参数日期。SET参数日期时间

凡日,月,年他将添加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; } 
} 
+0

仔细检查您的代码,以确保这是您的实际代码并编译。我发现您发布的代码块中至少有一处语法错误。 –

回答

0

DATA_REGISTRO is a Date type on 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; 
} 

我知道你可以在那里进行调试这条线,但最终将其删除代码,除非有什么你可以做的例外。

+0

哼,ok.More上的ID valor.retorna_date_time = objReader.GetDateTime(5).ToString;是5是否正确? – user3056183

+0

GetDateTime(5)返回QUANTIDADE列,因为这是查询中的第5列。使用'objReader.GetDateTime(objReader.GetOrdinal(“QUANTIDADE”))。ToString()'会更安全,因为它会计算出QUANTIDATE在运行时的列号。如果您添加或删除查询中的列,则不会有任何中断。 –

+0

你好,我再次尝试你推荐的方式。错误:FormatException是未处理的。 将字符串转换为DateTime时,在将每个变量放入de DateTime对象之前解析字符串以取得日期。我需要获取日期字符串的SQL来与其他日期时间字符串进行比较。 – user3056183

0

通过您的Dateparam_date

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