0

我正在访问硬编码路径中的 DBF 数据库文件,但文件夹名称包含 ex--BSTR-VSD,BSTR~VSD 的特殊字符,我无法重命名它。

因此,当我进行 odbc 连接说 odb 然后将查询放入 odb.commandText = select * from PATH(包含具有特殊字符的文件夹名称的硬编码路径)时,它会给出错误

例子:

System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand(); oCmd.CommandText = "SELECT * FROM "+ Pathname + " where DATE_Y >=110 and DATE_M >= " + From_Month + " and DATE_D>=" + From_Day + " and DATE_Y <=110 and DATE_M <= " + To_Month + "和 DATE_D<=" + To_Day + " ";

dt_Dbf.Load(oCmd.ExecuteReader());

和异常:: ERROR [42000] [Microsoft][ODBC dBase Driver] FROM 子句中的语法错误。

4

2 回答 2

0

用括号环绕

SELECT * 
  FROM ["+ Pathname + "]
 where DATE_Y >=110 
   and DATE_M >= " + From_Month + " 
   and DATE_D>=" + From_Day + " 
   and DATE_Y <=110 
   and DATE_M <= " + To_Month + "
   and DATE_D<=" + To_Day + " "

您还可以使用 StartDate 和 EndDate 之类的东西来清理它

于 2010-12-19T09:25:15.073 回答
0

为什么不使用参数化查询?您可以使用OdbcParameter 类

MSDN:它匹配字符串的整个长度,包括任何填充尾随空格。

        System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand();
        oCmd.CommandText = "SELECT * FROM  @pathname where DATE_Y >=110 and DATE_M >= @from_Month and DATE_D>= @from_Day and DATE_Y <=110 and DATE_M <= @to_Month and DATE_D<= @to_Day";
        oCmd.Parameters.Add(new OdbcParameter("@pathname", Pathname));
        oCmd.Parameters.Add(new OdbcParameter("@from_Month", From_Month));
        oCmd.Parameters.Add(new OdbcParameter("@to_Month", To_Month));
        oCmd.Parameters.Add(new OdbcParameter("@from_Day", From_Day));
        oCmd.Parameters.Add(new OdbcParameter("@to_Day", To_Day));
于 2010-12-19T16:37:56.230 回答