2015-08-03 5 views
0

Я новичок в программировании. и я с помощью CONSTANTS в SQL запросов как этотЯвляется ли хорошей практикой использовать CONSTANTS в SQL-запросах

private static final String TABLE_USERS = "users"; 
private static final String COLUMN_NAME = "name"; 

final String query = "SELECT "+COLUMN_NAME+" FROM "+TABLE_USERS; 

Это хорошая практика?

Извините за немые вопросы. :)

+0

Какие преимущества и недостатки вы думаете, этот подход? – Kayaman

+0

Allways использует [PreparedStatement] (http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html) – SomeJavaGuy

+0

Я считаю, что лучшие практики - использовать хранимые процедуры или использовать ORM, это не так. По какой причине вы идете в этом направлении?Есть ли конкретная причина? Вы не указали много информации. – Kritner

ответ

0

Да, считается хорошей практикой, потому что, если структура базы данных изменится, вы, надеюсь, просто должны изменить константы в своем классе.

Вы отметили это сообщение как Java, так и PHP, но в любом случае вы должны изучить библиотеки запросов.

1

EDIT: Я уверен, что у этого был тег PHP, прежде чем я ответил. Если нет, игнорируйте ссылки на конкретные библиотеки.

=================================

Это зависит от шаблона, который вы используете, и с какими ограничениями вы сталкиваетесь, а версия PHP является основной.

Если вы разрабатываете автономное приложение, которое вряд ли сильно изменится, то использование констант для имен таблиц будет полезно только в том случае, если вы ожидаете изменить имена таблиц.

Если вы разрабатываете повторно распространяемое приложение, то динамические имена таблиц (при установке) полезны, см. Пример WordPress.

Если вы используете ORM, например Doctrine2, то имена таблиц в значительной степени неактуальны, потому что они абстрагируются по большей части, и вы работаете с классами.

В конечном счете, хотя конкатенация строк для SQL становится беспорядочной, поэтому рекомендуется использовать построитель запросов, что упрощает работу с константами.

Например, если вы используете PHP5.3 +, вы можете использовать Doctrine DBAL. Вам не нужно включать ORM для использования DBAL, потому что ORM of Doctrine использует «это», а не наоборот. Если вы знакомы с Doctrine2 ORM, вы поймете, что построитель запросов использует имена классов, но это магия ORM, преобразующая их в имена реальных таблиц.

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

+0

плюс один для обозначения 'конкатенации строк для SQL становится беспорядочным ...' – theapache64

1

Такие вопросы были самой большой проблемой, с которой я столкнулся. Если вы имеете в виду SQLite, да, это хорошо, чтобы предотвратить ошибки строки запроса в больших проектах.

Считайте, что у вас есть более одной таблицы:

private static final String TABLE_ROLLS= "rolls"; 
private static final String TABLE_USERS = "users"; 
private static final String COLUMN_USERS_ID = "id"; 
private static final String COLUMN_USERS_NAME = "name"; 
private static final String COLUMN_ROLLS_ID = "id"; 

final String query = "SELECT "+COLUMN_USERS_NAME+" FROM "+TABLE_USERS; 

Надежда быть полезным