【问题标题】:Facing ORA-01830 Error when Selecting data from ORACLE database从 ORACLE 数据库中选择数据时遇到 ORA-01830 错误
【发布时间】:2019-04-14 07:06:35
【问题描述】:

我在尝试使用 WPF 从 Oracle 数据库中选择记录时遇到问题。 我收到此错误:ORA-01830(日期格式图片在转换整个输入字符串之前结束 原因)

我的代码:

OracleDataReader dr;
OracleCommand cmd = new OracleCommand();

using (OracleConnection cn = new OracleConnection() { ConnectionString = "DATA SOURCE=*****:1521/ORCL;PASSWORD=*****;PERSIST SECURITY INFO=True;USER ID=*****" })
{
    cn.Open();

    // DateTime dt = Convert.ToDateTime(from_datePicker.Text);
    OracleDataAdapter da = new OracleDataAdapter("Select B_NO,R_CLIENT_NAME,ENG_NAME,USER_NAME,R_ADDRESS,R_WORK_DATE,B_DATE,B_YEAR,B_WP_NAME,I_NAME,I_NO,BI_Q,I_CONTSR_TYPE_DESCR,R_PLACE_DESCR from VW_CI_REP_ITEMS_RESERV  where R_WORK_DATE = '" + from_datePicker.SelectedDate + "'", cn);

    DataSet ds2 = new DataSet();
    da.Fill(ds2, "VW_CI_REP_ITEMS_RESERV");

    DeltaInvoices_Grid.ItemsSource = ds2.Tables["VW_CI_REP_ITEMS_RESERV"].DefaultView;
}

GridCount_txt.Text = DeltaInvoices_Grid.Items.Count.ToString();

【问题讨论】:

    标签: c# wpf oracle


    【解决方案1】:

    当遇到ORA-01830错误时,会出现如下错误信息:

    ORA-01830: 日期格式图片在转换整个输入字符串之前结束 原因 您尝试输入日期值,但输入的日期与日期格式不匹配。

    我认为您应该像这样将传递给 oracle 数据适配器的“日期”字段转换为:

     TO_DATE(from_datePicker.SelectedDate, 'dd-mon-yyyy hh:mi PM')
    

    或您在数据库中保存此字段的任何其他格式。

    【讨论】:

    • 感谢您的重播,但我收到另一个错误:当前上下文中不存在名称“TO_DATE”
    • 请写下你放入OracleDataAdapter的代码(带to_date)
    【解决方案2】:

    试试这个

          OracleDataReader dr;
          using (OracleConnection cn = new OracleConnection() { ConnectionString = "DATA SOURCE=*****:1521/ORCL;PASSWORD=*****;PERSIST SECURITY INFO=True;USER ID=*****" })
          {
            cn.Open();
    
            var sql =
              "Select B_NO,R_CLIENT_NAME,ENG_NAME,USER_NAME,R_ADDRESS,R_WORK_DATE,B_DATE,B_YEAR,B_WP_NAME,I_NAME,I_NO,BI_Q,I_CONTSR_TYPE_DESCR,R_PLACE_DESCR from VW_CI_REP_ITEMS_RESERV  where R_WORK_DATE = :fromDatePicker";
    
            OracleCommand cmd = new OracleCommand(sql, cn);
            var parameter = new OracleParameter("fromDatePicker", OracleDbType.Date) {
              Value = Convert.ToDateTime(from_datePicker.Text),
    
            };
    
            cmd.Parameters.Add(parameter);
    
            OracleDataAdapter da = new OracleDataAdapter(cmd);
    
            DataSet ds2 = new DataSet();
            da.Fill(ds2, "VW_CI_REP_ITEMS_RESERV");
    
            DeltaInvoices_Grid.ItemsSource = ds2.Tables["VW_CI_REP_ITEMS_RESERV"].DefaultView;
          }
    
          GridCount_txt.Text = DeltaInvoices_Grid.Items.Count.ToString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多