Вы должны создать один класс контекста.
public class Context {
private final static Context instance = new Context();
public static Context getInstance() {
return instance;
}
private Connection con;
public void setConnection(Connection con)
{
this.con=con;
}
public Connection getConnection() {
return con;
}
private TabRoughController tabRough;
public void setTabRough(TabRoughController tabRough) {
this.tabRough=tabRough;
}
public TabRoughController getTabRough() {
return tabRough;
}
}
Вам нужно просто установить экземпляр контроллера при инициализации с помощью
Context.getInstance().setTabRough(this);
, и вы можете использовать его из всего приложение только с помощью
TabRoughController cont=Context.getInstance().getTabRough();
Теперь вы можете передать параметр любому контроллеру из всего приложения.
Не звонил бы это кодирующий стандарт - больше как стиль кодирования
SELECT
T1.col1,
T1.col2,
T2.col3
FROM
table1 T1
INNER JOIN ON Table2 T2 ON T1.ID = T2.ID
WHERE
T1.col1 = 'xxx'
AND T2.Col3 = 'yyy'
Мне нравится предшествование запятой путь:
SELECT
column1
, column2
, column3
, COALESCE(column4,'foo') column4
FROM
tablename
WHERE
column1 = 'bar'
ORDER BY
column1
, column2
это делает это самым легким, чтобы считать и отладить, по-моему.
Я знаю, что это длинно, но терпите меня, это важно. Этот вопрос открыл прохладную кучу проблем. И если Вам не нравятся блоки базы данных, продолжать читать.
И, прежде чем любой будет думать о наезде на мой ответ, , видят следующую статью и соединенные статьи к нему о блокировке, и перекомпилировал; два из самых разрушительных ресурсов совершают нападки на базе данных SQL.
http://support.microsoft.com/kb/263889
, который я могу ввести довольно быстро, и мне не нравится вводить больше, чем следующий человек. Но точки ниже я следую чрезвычайно тесно, даже если это больше вводит. Так то, что я создал свои собственные приложения SP, чтобы сделать это для меня.
моменты, которые я поднимаю, действительно важны! Вы могли бы даже сказать себе, "Вы ребячество, это не проблема", ну, в общем, затем Вы не прочитали статьи выше. И , это полностью слабоумно, что M$ вставил бы эти точки как ПРИМЕЧАНИЯ. Эти проблемы мне должны быть ПОЛУЖИРНЫМИ и КРИЧАТЬ.
я также делаю большое кодирование для создания моих основных сценариев с помощью приложений C# для ускорения разработки и этих методов является очень звуковым (ценность 10 лет) для создания SPS сценариев легче и особенно быстрее.
существуют больше, чем это, но это - то, что я делаю для первых 60% из всего.
<час>Лучшие практики
Предпочтения
Выбор
<час>CREATE PROC [dbo].[procTable_SEL] AS SET NOCOUNT ON SELECT [Column1] = T1.[col1] , [Column2] = T1.[col2] , [Column3] = T2.[col3] FROM [dbo].[Table] T1 INNER JOIN ON [dbo].[Table2] T2 ON T1.ID = T2.ID WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO
, Обновление
<час>CREATE PROC [dbo].[procTable_UPD] AS SET NOCOUNT ON UPDATE t1 SET [Column1] = @Value1 , [Column2] = @Value2 , [Column3] = @Value3 FROM [dbo].[Table1] T1 INNER JOIN ON [dbo].[Table2] T2 ON T1.[ID] = T2.[ID] WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO
Вставляет
CREATE PROC [dbo].[procTable_INS] AS SET NOCOUNT ON INSERT INTO [Table1] ( [Column1] , [Column2] , [Column3] ) VALUES ( @Value1 , @Value2 , @Value3 ) SET NOCOUNT OFF GO
, ИЛИ
<час>CREATE PROC dbo.procTable_INS AS SET NOCOUNT ON INSERT INTO [table1] ( [Column1] , [Column2] , [Column3] ) SELECT [Column1] = T1.col1 , [Column2] = T1.col2 , [Column3] = T2.col3 FROM dbo.Table1 T1 INNER JOIN ON Table2 T2 ON T1.ID = T2.ID WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO
Удаляют
CREATE PROC dbo.procTable_DEL AS SET NOCOUNT ON DELETE FROM [dbo].[Table1] T1 INNER JOIN ON [dbo].[Table2] T2 ON T1.[ID] = T2.[ID] WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO
Если Вы гуглите, существует много кодирования стандартов там. Например,
и
Из действительно очень хорошего блога на PostgreSQL, но этой темы применимо в целом:
Удобные в сопровождении запросы - моя точка зрения (depesz.com)
... Я решил что мои приоритеты для записи удобных в сопровождении запросов:
Избегают бесполезного ввода.
Использование искажает для таблиц/представлений. Всегда. И сделайте их разумными псевдонимами.
Форматируют код в некотором роде.
Избегают цитат (да, это - то, почему я ненавижу Django)
синтаксис соединения Использования
, я действительно соглашаюсь с капитализацией зарезервированных слов и любого идентификатора, кроме моего собственного.
Мне лично не нравится снабжать префиксом название хранимой процедуры sp_ - это избыточно, IMO. Вместо этого мне нравится снабжать префиксом их "единицу функциональности" идентификатор. например, я назову sprocs для контакта с заказами order_Save, order_GetById, order_GetByCustomer, и т.д. Это сохраняет их всех логически сгруппированными в студии управления и мешает выбирать неправильную. (GetOrderByProduct, GetCustomerById, и т.д....)
, Конечно, это - персональное предпочтение, другие люди могут предпочесть иметь все Собирание sprocs, все Сохранения, и т.д.
Просто мой 2c.
Я обычно сохраняю очень мало на строку, т.е.:
select
col1,
col2,
col3
from
some_table tabl1
where
col1 = 'some'
and
(
col2 = 'condition'
or col2 = 'other'
)
Google для sql симпатичный принтер или взгляд здесь . Я не попробовал его сам, но это дает Вам хорошее начало. Большинство коммерческих инструментов как Жаба имеет опцию "форматирования", которая помогает, также.
Игра вокруг с www.sqlinform.com - я рекомендую использовать стандарт ANSI-92 , и затем симпатичный это с тем сайтом.
SELECT c.id
, c.name
, c.folder
, cs.num_users active_members
, cs.num_videos
FROM campaign c
JOIN campaign_stats cs
ON cs.campaign_id = c.id
JOIN (SELECT _c.id
, _c.name
FROM campaign _c
WHERE _c.type = 9) t_c
ON t_c.id = c.id
WHERE c.id IN (1,2,3)
AND cs.num_videos > 10
Это работает довольно хорошее для нас.
Этот фактический запрос не имеет большого смысла, так как я пытался создать его быстро как пример..., но это не точка.
в начале новых строк помогают создать динамические запросы:
$sql .= ", c.another_column"
все остальное просто.
Что-либо в синем - верхний регистр SELECT
, DELETE
, GO
, и т.д.
, Имена таблиц исключительны как таблица, которая содержит наших клиентов, были бы клиентские Связывающие таблицы таблицы
, tablename_to_tablename
использование _
между работами в именах таблиц и параметрах
пример
BEGIN
SELECT
Company.ID AS Company_ID,
Company.Client_Name,
Company.Website,
Office.Office_Name
FROM
Company_Office WITH(NOLOCK)
INNER JOIN Company WITH(NOLOCK) ON Company_Office.Company_ID = Company.ID
WHERE
END
create table
#tempTable (
col1 int,
col2 int,
col3 int
)
insert into
#tempTable (
col1,
col2,
col3
)
select
col1,
col2,
col3
from
Table3
inner join Table2
on Table1.col1 = Table2.col2
where col1 = 5
select
col2,
case when col1 = 3
then 'something'
else 'somethingelse'
end
from #tempTable
where
col1 = 5
and (
col2 = 5
or col3 in (
select field
from Table2
where
somecol = 2
and othercol = 5
)
)