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

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, пусть так и будет. Потом подумал, что это поле вообще тут не нужно и хотел его удалить, но опять же решил оставить, раз на бумажке есть. Вообщем доверяйте своей интуиции.


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.

Related:

Posted in Oбщее | Tags:

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

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

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

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