我有以下代码,由于数据类型问题,我无法使其工作。我试过多次调整它,但我不断收到错误,如
填充数据集时发生异常:
错误[07001] [Oracle] [ODBC] [Ora] ORA-01008:并非所有变量都绑定
经典ASP页面:
MyBool = MyProject.MyMethod(Request("ToDate")) //for example:"7/18/2017"
我的班级:
public bool MyMethod(string EndDate)
{
MyData data = new MyData();
return (data.MyMethod(EndDate));
}
public bool MyMethod(string EndDate)
{
(...)
CreateCommand("SELECT * FROM MYTABLE WHERE Cast(StartDate as date) <= Cast(@EndDate as date)");
AddInParameter("EndDate", DbType.String, EndDate);
我的表:
STARTDATE [VARCHAR2(10) NULL]
对于在这种情况下应该如何处理数据类型和/或修改SQL命令,我将不胜感激。
这是在AddInParameter()中执行的:
DbParameter parameter = providerFactory.CreateParameter();
parameter.ParameterName = FormatParameterName("EndDate");
parameter.DbType = type; //(DbType type = String)
parameter.Value = value; //(Object value = "7/18/2017")
parameter.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter);
答案 0 :(得分:0)
如果您的StartDate和EndDate列是字符类型,请将其更改为DateTime。字符类型的列(如varchar,nvarchar等)用于字符,datetime类型的列用于DateTime。
将DateTime保存为字符串没有意义。
作为旁注;在C#中的DateTime中没有任何隐式格式。它只是包含一些时间的值。字符串表示形式有格式。
如果您想保持列类型不变,您需要做什么,如下所示:EndDate.ToString("MM/dd/yyyy g", CultureInfo.InvariantCulture); // Displays 08/04/0070 A.D.