#c# #wpf #oracle
#c# #wpf #Oracle
Вопрос:
У меня проблема при попытке выбрать записи из базы данных Oracle с помощью WPF. Я получил эту ошибку: 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();
Ответ №1:
При возникновении ошибки ORA-01830 появится следующее сообщение об ошибке:
ORA-01830: изображение формата даты заканчивается до преобразования всей входной строки, потому что вы пытались ввести значение даты, но введенная дата не соответствовала формату даты.
Я думаю, вам следует преобразовать поле «Дата», которое вы передаете в oracle data adapter, следующим образом:
TO_DATE(from_datePicker.SelectedDate, 'dd-mon-yyyy hh:mi PM')
или любой другой формат, в котором вы сохранили это поле в своей базе данных.
Комментарии:
1. спасибо за ваш повтор, но я получил другую ошибку: имя ‘TO_DATE’ не существует в текущем контексте
2. пожалуйста, напишите код, который вы ввели в 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();