插入表格会返回ORA-01843:不是有效月份

时间:2013-05-28 21:18:14

标签: c# sql oracle

我需要在C#(Windows窗体)

的oracle表格中插入一行
conn.Open();
OracleCommand cmd = new OracleCommand("INSERT INTO RECIPES(id,name,time_cooking,time_prep,price,directions,user_name,submit_timestamp) VALUES (:id, :name, :time_cook, :time_prep, :price, :directions, :user_name, :sub_time)",conn);
cmd.Parameters.AddWithValue(":id",x);
cmd.Parameters.AddWithValue(":name",textBox10.Text);
cmd.Parameters.AddWithValue(":time_cook", textBox9.Text);
cmd.Parameters.AddWithValue(":time_prep",textBox8.Text);
cmd.Parameters.AddWithValue(":price", textBox6.Text);
cmd.Parameters.AddWithValue(":directions",richTextBox2.Text);
cmd.Parameters.AddWithValue(":user_name",this.username);
cmd.Parameters.AddWithValue(":sub_time",DateTime.Now.ToString("MM/dd/yyyy"));

try
{
    cmd.ExecuteNonQuery();
}
catch (OracleException ex)
{
    MessageBox.Show(ex.ToString());
}

conn.Close();

我收到以下错误。

  

ORA-01843:不是有效月份

我检查了oracle:

select * 
from nls_session_parameters;

并返回NLS_DATE_FORMAT mm / dd / yyyy

1 个答案:

答案 0 :(得分:0)

您不应该将日期作为字符串传递;您应该将其作为日期传递...只需删除ToString电话:

cmd.Parameters.AddWithValue(":sub_time", DateTime.Now);

如果传递字符串,将使用数据库中nls_date_format参数指定的格式对其进行解析。如果传递的格式不是数据库所期望的格式,则解析将失败。通过传递日期本身,您无需担心格式。