Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пробелы в названии файла в SQL запросе, Пытаюсь прочитать dbf файл в c# 
:(
    Опции темы
Atiskara
Дата 22.4.2011, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Добрый день. Помогите решить проблему. Читаю dbf файл выбираемый через opendialog, т.е. файл может называться как угодно и находиться где угодно. 

Код

 cmd.CommandText = @"SELECT * FROM "+openFileDialog1.FileName;
 DataTable dt = new DataTable();
 dt.Load(cmd.ExecuteReader());
 dataGridView1.DataSource=dt;


если в пути к файлу названия всех папок не содержат пробелы, запрос выполняется корректно. А вот названия с пробелами выдают ошибку. Поиск в гугле дал советы исплользовать [такие скобки] и 'одинарные кавычки', но такой способ не помогает, выходит сообщение, что в запросе используются некорректные символы. 
PM MAIL   Вверх
Gluttton
Дата 22.4.2011, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Atiskara, правильнее использовать параметры.

Хм...
Цитата(Atiskara @  22.4.2011,  14:05 Найти цитируемый пост)
cmd.CommandText = @"SELECT * FROM "+openFileDialog1.FileName;

А как это? SELECT из файла? Нужно же имя таблицы указывать вроде бы как.


--------------------
Слава Україні!
PM MAIL   Вверх
Atiskara
Дата 22.4.2011, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Gluttton, 
ну пусть вопрос звучать будет так - чтение таблицы формата dbf представленного в файле. ну один фиг, получается чтение из файла. 
и не понимаю, где это у меня указаны неправильные параметры.

Это сообщение отредактировал(а) Atiskara - 22.4.2011, 15:21
PM MAIL   Вверх
Gluttton
Дата 22.4.2011, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Цитата(Atiskara @  22.4.2011,  15:17 Найти цитируемый пост)
ну пусть будет чтение таблицы формата dbf представленного в файле

Я не понимаю, как можно выполнять SELECT без указания имени таблицы (мне никогда не приходилось сталкиваться с фалами *.dbf - это типа один файл - одна таблица)?


Цитата(Atiskara @  22.4.2011,  15:17 Найти цитируемый пост)
и не понимаю, где это у меня указаны неправильные параметры.

Приношу извинения. Параметры используются не для предложения FROM - я дал неправильный совет.

А можно на весь код подключения к БД и выполнения запроса посмотреть?


--------------------
Слава Україні!
PM MAIL   Вверх
jonie
Дата 22.4.2011, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(Gluttton @  22.4.2011,  15:32 Найти цитируемый пост)

Я не понимаю, как можно выполнять SELECT без указания имени таблицы (мне никогда не приходилось сталкиваться с фалами *.dbf - это типа один файл - одна таблица)?

именно. один файл=таблица. имя файла=имя таблицы.

Надо попробывать заключить это "имя" в квадратные скобки, или кавычки.



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Atiskara
Дата 22.4.2011, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Цитата(Gluttton @ 22.4.2011,  15:32)
А можно на весь код подключения к БД и выполнения запроса посмотреть?


Код

else {//читаем dbf файлы
                        dataGridView1.Columns.Clear();
                        dataGridView1.DataSource = null;
                        dataGridView1.Dock = DockStyle.Fill;

                        string dbdir = @openFileDialog1.FileName;

                        string connectionString = String.Format("Driver={{Microsoft dBase Driver (*.dbf)}};SourceType=DBF;SourceDB={0};Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;", dbdir);
                           

                        using (System.Data.Odbc.OdbcConnection connection = new System.Data.Odbc.OdbcConnection(connectionString))
                        {
                            connection.Open();
                            using (System.Data.Odbc.OdbcCommand cmd = connection.CreateCommand())
                            {
                                cmd.CommandText = @"SELECT * FROM "+openFileDialog1.FileName;
                                DataTable dt = new DataTable();
                                dt.Load(cmd.ExecuteReader());
                                dataGridView1.DataSource=dt;
                            }
                        }


Добавлено через 2 минуты и 18 секунд
Цитата(jonie @ 22.4.2011,  16:11)
Надо попробывать заключить это "имя" в квадратные скобки, или кавычки.

Пробывала, о чем я указала в самом первом посте. НЕ работает однако(((
PM MAIL   Вверх
Gluttton
Дата 22.4.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Atiskara, 
1. Валидна ли строка подключения?
Я посмотрел на www.connectionstrings.com, вроде бы там немного отличается.
2. Попробуй жестко прописать имя файла в запросе. Будет работать или нет?
3. Какая именно ошибка возникает?


--------------------
Слава Україні!
PM MAIL   Вверх
Данкинг
Дата 22.4.2011, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(Atiskara @  22.4.2011,  15:05 Найти цитируемый пост)
если в пути к файлу названия всех папок не содержат пробелы

Я не в курсе про С#, но в общем корректная работа с .dbf возможна при отсутствии в пути не только пробелов, но и всяких символов вроде точки или скобок.
Цитата(Gluttton @  22.4.2011,  16:32 Найти цитируемый пост)
Я не понимаю, как можно выполнять SELECT без указания имени таблицы (мне никогда не приходилось сталкиваться с фалами *.dbf - это типа один файл - одна таблица)?

Правильно всё. Один файл - одна таблица.



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Atiskara
Дата 22.4.2011, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Цитата(Gluttton @ 22.4.2011,  17:57)
Atiskara, 
1. Валидна ли строка подключения?
Я посмотрел на www.connectionstrings.com, вроде бы там немного отличается.
2. Попробуй жестко прописать имя файла в запросе. Будет работать или нет?
3. Какая именно ошибка возникает?

Gluttton
ты очень невнимательно читаешь мои посты. Я же сказала, что ВСЕ РАБОТАЕТ, когда в пути нет пробелов, да я пробовала это жестко прописав пути. Но стоит добавить папку с пробелом в названии, как вылетает ошибка о том, что в строке используется некорректный символ. Раз с "корректными" данными работает, значит строка подключения вполне валидна.

Добавлено через 3 минуты и 43 секунды
Цитата(Данкинг @ 22.4.2011,  18:57)
Цитата(Atiskara @  22.4.2011,  15:05 Найти цитируемый пост)
если в пути к файлу названия всех папок не содержат пробелы

Я не в курсе про С#, но в общем корректная работа с .dbf возможна при отсутствии в пути не только пробелов, но и всяких символов вроде точки или скобок.

эээх. ну неужто никак нельзя. некрасиво же получится, ставить условия заказчику, чтобы он распологал свои дбфки в пути не содержащие пробелов. А если он умеет пользоваться только папкой "Мои документы" или "Рабочий стол" smile бида....
PM MAIL   Вверх
Данкинг
Дата 22.4.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(Atiskara @  22.4.2011,  21:02 Найти цитируемый пост)
некрасиво же получится, ставить условия заказчику, чтобы он распологал свои дбфки в пути не содержащие пробелов. 

Ну нельзя. smile К примеру, если в пути к таблице есть пробелы, то на FoxPro даже простейший запрос на добавление столбца выдаст ошибку:
Код

alter table dbf() add FFFF c(10)

А насчёт заказчика - дык, сам такой формат выбрал. Его никто не просил. Наверное. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Atiskara
Дата 25.4.2011, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 18.10.2007

Репутация: нет
Всего: нет



Данкинг, спасибо. ладно уж, пусть заказчик мучается((. хоть он и не выбирал этот формат, а за него решили вышестоящие бюрократы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.