我正在访问处于硬编码路径的DBF数据库文件,但文件夹名称包含ex-BSTR-VSD,BSTR~VSD的特殊字符,我无法重命名。
所以当我正在制作odbc连接时说odb然后把查询放进去 odb.commandText =从PATH中选择*(包含具有特殊字符的文件夹名称的硬编码路径)然后它给出错误
示例:
System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand(); oCmd.CommandText =“SELECT * FROM”+路径名+“其中DATE_Y> = 110且DATE_M> =”+ From_Month +“和DATE_D> =”+ From_Day +“和DATE_Y< = 110和DATE_M< =” + To_Month +“和DATE_D< =”+ To_Day +“”;
dt_Dbf.Load(oCmd.ExecuteReader());
和例外:: 错误[42000] [Microsoft] [ODBC dBase驱动程序] FROM子句中的语法错误。
答案 0 :(得分: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之间
答案 1 :(得分:0)
为什么不使用 Parametrized Query ?您可以使用OdbcParameter class。
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));