Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.005 c
15-1284557249
LD
2010-09-15 17:27
2010.12.26
ZipForge


2-1285840973
Рома
2010-09-30 14:02
2010.12.26
idhttp


15-1284723086
И. Павел
2010-09-17 15:31
2010.12.26
Как преобразовать строку "123" в "1,2,3" в MS SQL 2005


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


2-1285328385
PavDimka
2010-09-24 15:39
2010.12.26
Keywords: record, class, interface, object. Object?




   Наверх