невозможно получить доступ к пути к файлу, потому что имя папки содержит пробел и специальные символы - PullRequest
0 голосов
/ 18 декабря 2010

Я обращаюсь к файлу базы данных 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 + ", где DATE_Y> = 110 и DATE_M> =" + From_Month + "и DATE_D> =" + From_Day + "и DATE_Y <= 110 и DATE_M <=" + To_Month + "и DATE_D <= "+ To_Day +" ";</p>

dt_Dbf.Load (oCmd.ExecuteReader ());

и исключение :: ОШИБКА [42000] [Microsoft] [Драйвер ODBC dBase] Синтаксическая ошибка в предложении FROM.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2010

Почему бы не использовать Параметризованный запрос ? Вы можете использовать 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));
0 голосов
/ 19 декабря 2010

Объемный звук в скобках

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 + " "

Вы также можете убрать это, используя такие вещи, как betweem StartDate и EndDate

...