Слушайте свою интуиции

March 30th, 2009 Begemot Posted in Oбщее

Что отличает опытного разработчика от новичка? Правильно – хорошая интуиция 🙂

Только что ситуация на работе – надо написать сохранение проектов с которыми работает программа в базу данных. Как это все должно выглядеть обсудили еще в пятницу, начальник набросал табличку в которой все должно хранится. Я с утра сел – казалось бы куда проще – заимплементить дамп в бд, нескольких классов, учитывая что структура уже придумана и основной код сохранения в хмл написан.

Не работает, падает на pDB->PrepareStatement(…), убил 20 минут перепроверяя свои знания SQL, правильность написания полей и т.д. – все правильно, но не работает. Оказалось, что ему не нравится что одно из полей таблицы названо “Index”.  Не знаю в чем трабла в SQLite или в используемом враппере wxSqlite3, или еще в чем… но факт что падает на строке

st = pDB->PrepareStatement(_T(“INSERT INTO MMFrames (ProjectID, Index,  Type, Properties) VALUES (?, ?, ?, ?);”));

Пришлось переименовывать поле в таблице.

А весь юмор ситуации в том что, когда создавал бд – я подумал что лучше вместо Index назвать поле Position. Но решил что раз начальник написал Index, пусть так и будет. Потом подумал, что это поле вообще тут не нужно и хотел его удалить, но опять же решил оставить, раз на бумажке есть. Вообщем доверяйте своей интуиции.

Related:

Posted in Oбщее | Tags:

3 Responses to “Слушайте свою интуиции”

  1. INDEX – зарезервированное слово SQL. Так что дело не в sqlite или библиотеке (например, вы наверняка знакомы с командой CREATE INDEX).

  2. Каюсьььь и посыпаю голову пеплом:)

  3. Да, это известная фича =) По той же причине у меня в таблицах поголовно в качестве сокращения от description вместо desc используется descr. А вместо index, кстати, обычно пишут id.
    На самом деле, не знаю, как в SQLite, а в MySQL это решается использованием апострофов: `Index`. Вообще, если взять за правило всегда заключать имена таблиц и полей в апострофы, а все значения, даже числовые, – в кавычки, можно избежать многих проблем. Впрочем, конечно, не использовать зарезервированные слова – тоже важная мера предохранения от ошибок.