2017-02-21 4 views
0

Я работаю над проектом для колледжа (UK College, а не университета), и он довольно небольшой, но включает в себя некоторый SQL, потому что у меня есть база данных для отслеживания всего, что пользователь делает. На моей странице создания учетной записи У меня есть запрос, который работает этот SQL против моей базы данных:Проблема с строкой SQL, которая на самом деле ничего не делает

INSERT INTO Users (UName, FName, SName, PWord, ULevel) 
VALUES (:pmUName, :pmFName, :pmSName, :pmPWord, :pmULevel); 

Все, что начинается с :pm является параметром, который я могу контролировать в Delphi, я просто интересно, если есть что-то в широком масштабе важно я 'm отсутствует, поскольку он не вставляется в таблицу Users при выполнении.

+0

что же журналы говорят? (они все еще учат delphi, ничего себе) – NimChimpsky

+0

Может быть все, без схемы таблиц и журналов ошибок невозможно ответить. Тем не менее, странно, что вы «INSERT» _new record_ только с «ULevel» и никакими другими данными. Дикая догадка о том, что вы опустили столбцы, не содержащие NULL, по умолчанию из ваших вложений ... – Dario

+0

У меня нет журналов, я не уверен, как бы я их сгенерировал, но кажется, что это isn «Даже касаясь базы данных, я запускаю базу данных Access 2003, потому что это единственная вещь, с которой Delphi будет общаться с этим типом подключения (я думаю, что это более старый протокол, я использовал его в XE4, но это то, м, используемых в настоящее время в XE10). Добавив вещи, предложенные StevenMcGovern, макет таблицы выглядит как [this] (http://imgur.com/a/eFtVT), и с тех пор я переместил ULevel, чтобы выглядеть как отредактированный оригинальный пост – JReid99

ответ

0

В зависимости от используемой базы данных вы можете запускать SQL в транзакции, которую необходимо совершить? (то есть BEGIN; обычно запускает транзакцию, и COMMIT совершит все или ROLLBACK, если в любом из SQL возникла некоторая ошибка).

Но в качестве первого шага ваши журналы покажут фактическую ошибку, предложенную Нимхимпским.

0

Это может привести к тому, что мой вопрос будет отклонен, но после прослеживания кода в миллион раз я заметил, что проверка моего имени пользователя была отменена, поэтому, если имя пользователя уже существует, оно пройдет, но если оно не вернет false, и не выполнять SQL. Я написал этот конкретный код давным-давно и не думал, что это будет проблемой, пока у меня не будет друга, который просмотрит проект, и они решили проследить его. В SQL не было ничего плохого, поэтому многие извинялись перед людьми, которые посвятили свое время диагностике не-проблемы.

TLDR: Убедитесь код выполняется, прежде чем предположить, что код неправильный

+0

Рад, что вы разобрали его, он просто доказывает, что две пары глаз лучше, чем одна. Другое дело - попытаться объяснить кому-то, что делает ваш код.Но это не должно быть действительно в ответ здесь, пожалуйста, замените его правку к вашему д (хотя вы можете найти это то голосование не по теме). – MartynA

+0

Я слышал, что называется резиновая утка решение, где программисты объяснить свое решение резиновой уткой и что помогает им отладить проблему. Мне, возможно, придется купить утку ...... – JReid99

Смежные вопросы