Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.26;
Скачать: CL | DM;

Вниз

Вопрос по C Sharp, если можно )   Найти похожие ветки 

 
Василий Жогарев ©   (2010-09-15 18:24) [0]

Пытаюсь выполнить запрос SELECT с условием, к DBF- файлу...
Выдает ошибку:
System.Data.Odbc.OdbcException: ERROR [07002] [Microsoft][Драйвер ODBC dBase] Слишком мало параметров. Требуется 1.

Убираю условие, WHERE, все работает не пойму в чем собственно дело...

Вот часть кода:
public DataSet GetDataSetFromAdapter(DataSet dataSet, string connectionString, string queryString)
 {
  using (OdbcConnection connection = new OdbcConnection(connectionString))
  {
   OdbcDataAdapter adapter = new OdbcDataAdapter(queryString, connection);
   connection.Open();
   adapter.Fill(dataSet);
   connection.Close();
  }
  return dataSet;
 }


DataSet ds = new DataSet();
           GetDataSetFromAdapter(ds, connectionString, @"SELECT name FROM structure WHERE parent = 0"); //Вот тут ошибка!...
           MessageBox.Show(ds.Tables[0].Rows.Count.ToString());


Заранее спасибо, уважаемые.


 
Плохиш ©   (2010-09-15 18:42) [1]

Подозреваю, что вот это "@" надо убрать.


 
Плохиш ©   (2010-09-15 18:43) [2]

или всё-таки надо писать
ds = GetDataSetFromAdapter...


 
Иксик ©   (2010-09-16 00:05) [3]

@ правильно, а вот [2] скорее всего оно и есть :)


 
Иксик ©   (2010-09-16 00:05) [4]

@ правильно, а вот [2] скорее всего оно и есть :)


 
Василий Жогарев ©   (2010-09-16 09:45) [5]

Нашел ошибку, она состоит в следующем:
Когда заменяем Data type DBF- файла в поле parent с Integer на Numeric, все прекрасно работает, с чем это связано понять не могу....
Но при этом при всем возникает следующая ошибка при преобразовании типов, далее по коду программы:
  DataSet ds = new DataSet();
  ds = GetDataSetFromAdapter(connectionString, "SELECT * FROM structure WHERE (parent=0");
  foreach(DataRow row in ds.Tables[0].Rows)
  {
   Item.Tag = (int)row["parent"];
           }

Т.е. Numeric в int, это понятно, не совместимость типов. Но как тогда в программе и DBF- файле использовать одни и те же типы, если он не Хочет понимать тип Integer DBF- файла?


 
Василий Жогарев ©   (2010-09-16 09:53) [6]

Есть два типа файла DBF, это: Visual FoxPro и dBase III Plus я использую dBase III Plus
Может проблема в этом?


 
Anatoly Podgoretsky ©   (2010-09-16 10:05) [7]

> Василий Жогарев  (16.09.2010 09:53:06)  [6]

У dBase III нет типа Integer


 
Василий Жогарев ©   (2010-09-16 10:42) [8]

Вопрос снят, использую (double)row, работает. Вопросов больше не имею.
Спасибо всем.

Ветку я думаю можно оставить...


 
М. Береговой   (2010-09-16 20:51) [9]

int.Parse(row["parent"].ToString())
Так должно всегда работать, только надо еще DBNull.Value проверять:
int.Parse(row["parent"]==DBNull.Value?"0":row["parent"].ToString())
или
double.Parse(row["parent"]==DBNull.Value?"0":row["parent"].ToString())



Страницы: 1 вся ветка

Текущий архив: 2010.12.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
2-1285939658
IceBeerg
2010-10-01 17:27
2010.12.26
Не устанавливается стиль окна


2-1285874599
faiwer
2010-09-30 23:23
2010.12.26
Главная форма и модальные окна


15-1284551961
Baks
2010-09-15 15:59
2010.12.26
Соединение приложения с БД MySQL


2-1285589727
istok
2010-09-27 16:15
2010.12.26
convert LSA_UNICODE_STRING to string


2-1285687422
invincible_11
2010-09-28 19:23
2010.12.26
Проблема С Базой