首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入表返回ORA-01843:无效月份

插入表返回ORA-01843:无效月份
EN

Stack Overflow用户
提问于 2013-05-28 21:18:14
回答 1查看 2.8K关注 0票数 0

我需要从C# (Windows )中将一行插入到oracle表中

代码语言:javascript
复制
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:无效月份

我签了甲骨文:

代码语言:javascript
复制
select * 
from nls_session_parameters;

并返回NLS_DATE_FORMAT mm/dd/yyyy

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-28 22:49:27

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

代码语言:javascript
复制
cmd.Parameters.AddWithValue(":sub_time", DateTime.Now);

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16801664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档