2015-07-21 144 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));