C# 基于日期字段从Oracle检索数据

C# 基于日期字段从Oracle检索数据,c#,asp.net,oracle,C#,Asp.net,Oracle,我在SQL Server上做过很多次,只是在这一次遇到了一些问题,因为我的数据在Oracle中 我正在做的是从Oracle过程中检索数据,并尝试将其引入C#中的数据网格。我的代码如下: OracleCommand cmd3 = new OracleCommand(); cmd3.CommandType = CommandType.StoredProcedure; cmd3.CommandText = "CST_AMR_PNDSOURCEDOCS"; cmd3.Connection = conn;

我在SQL Server上做过很多次,只是在这一次遇到了一些问题,因为我的数据在Oracle中

我正在做的是从Oracle过程中检索数据,并尝试将其引入C#中的数据网格。我的代码如下:

OracleCommand cmd3 = new OracleCommand();
cmd3.CommandType = CommandType.StoredProcedure;
cmd3.CommandText = "CST_AMR_PNDSOURCEDOCS";
cmd3.Connection = conn;

string stDate = String.Format("{0:dd/MM/yyyy}", txtPendStartDt.Text);
string enDate = String.Format("{0:dd/MM/yyyy}", txtPendEndDt.Text);

cmd3.Parameters.AddWithValue("PndStDt", OracleType.DateTime).Value = stDate;
cmd3.Parameters.AddWithValue("PndEnDt", OracleType.DateTime).Value = enDate;
cmd3.Parameters.Add("cursor_", OracleType.Cursor).Direction = ParameterDirection.Output;

var SearchAdapter = new OracleDataAdapter(cmd3);
var ds = new DataSet();
SearchAdapter.Fill(ds, "tblOpenStatus");

DataGrid_AdminRpt.DataSource = ds;
DataGrid_AdminRpt.DataBind();
我在asp.net中有一个带有RegularExpressionValidator的文本框:

<td style="width:120px">
        <asp:TextBox ID="txtPendStartDt" runat="server" Width="70px"></asp:TextBox>
        <asp:RegularExpressionValidator ID="stdtValid" runat="server" ControlToValidate="txtPendStartDt"
                ErrorMessage="X" ValidationExpression="^(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19|20)\d\d$"></asp:RegularExpressionValidator>
</td>
<td style="width:120px">
        <asp:TextBox ID="txtPendEndDt" runat="server" Width="70px"></asp:TextBox>
        <asp:RegularExpressionValidator ID="endtValid" runat="server" ControlToValidate="txtPendEndDt"
                ErrorMessage="X" ValidationExpression="^(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19|20)\d\d$"></asp:RegularExpressionValidator>
</td>

运行此命令时,在
SearchAdapter.Fill(ds,“tblOpenStatus”)
行上出现错误:

ORA-01843:不是有效月份ORA-06512:在第1行


我输入的日期是2010年1月1日和2017年3月20日

不要向日期字段发送文本。您应该首先尝试解析字符串“到日期”

 DateTime enteredDate = DateTime.Parse(enteredString);

asp.net代码是否与该问题相关?你不能用有效日期替换它来测试它吗?我猜您没有使用标准ISO格式来表示日期
YYYY/MM/DD
好吧,我用硬编码值(即字符串StDate=“1/1/2015”;)替换了我的StDate和EnDate,但仍然出现了相同的错误消息。在Oracle端,字段的数据类型为Date。我对Oracle还是新手,我必须忽略一些东西。再次尝试ISO格式
2015/01/01