我已经使用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日。
答案 0 :(得分:0)
不要将文字发送到日期字段。您应该首先尝试将字符串解析为日期。的 DateTime.Parse 强>
DateTime enteredDate = DateTime.Parse(enteredString);