根据日期字段

时间:2017-04-03 18:30:57

标签: c# asp.net oracle

我已经使用SQL Server做了很多次,只是遇到了我的数据在Oracle中的问题。

我正在做的是从Oracle过程中检索数据并尝试将其带入C#中的DataGrid。我的代码是这样的:

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日。

1 个答案:

答案 0 :(得分:0)

不要将文字发送到日期字段。您应该首先尝试将字符串解析为日期。的 DateTime.Parse

 DateTime enteredDate = DateTime.Parse(enteredString);