Я должен сохранить sqlconnection на своем уровне доступа к данным?

Я думаю, вы хотите что-то более похожее на Fit<-aov(Overall ~ Unit,data=basic). Overall ~ Unit говорит, что R следует рассматривать в целом как результат, предсказываемый Unit; Вы уже указали, что информационный блок для поиска этих переменных является базовым.

Вот пример, чтобы показать вам, как это работает:

> y <- rnorm(100)
> x <- factor(rep(c('A', 'B', 'C', 'D'), each = 25))
> dat <- data.frame(x, y)
> aov(y ~ x, data = dat)
Call:
   aov(formula = y ~ x, data = dat)

Terms:
                        x Residuals
Sum of Squares    2.72218 114.54631
Deg. of Freedom         3        96

Residual standard error: 1.092333
Estimated effects may be unbalanced

Обратите внимание, вам не нужно использовать аргумент данных, вы также можете использовать aov(dat$y ~ dat$x), но первый аргумент функции должна быть формула.

8
задан tom.dietrich 29 October 2008 в 15:28
поделиться

6 ответов

В большинстве случаев организация пула подключений.NET обрабатывает это для Вас. Даже при том, что Вы открываетесь и заключительные соединения с помощью кода, это не то, что происходит негласно. Когда Вы инстанцируете и открываете соединение.NET ищет существующее соединение в пуле соединения с тем же connectionstring и дает Вам это вместо этого. При закрытии соединения оно возвращается к пулу соединения для будущего использования.

Если Вы используете SQL Server: http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

OLE DB, ODBC, Oracle: http://msdn.microsoft.com/en-us/library/ms254502.aspx

Статья Dino Esposito: http://www.wintellect.com/Articles/ADO%20NET%20Connection.pdf

Можно переопределить поведение объединения значения по умолчанию с именем/значениями connectionstring: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx. Посмотрите вторую таблицу настроек, содержащих 'Время жизни Соединения'.

22
ответ дан 5 December 2019 в 05:13
поделиться

Там не является много служебным с тех пор, настройками по умолчанию, пулы хранятся в пуле соединения. Таким образом при открытии соединения часто Вы будете просто получать готовое соединение от пула. Создание SqlConnections не дало мне проблем.

5
ответ дан 5 December 2019 в 05:13
поделиться

При использовании той же строки подключения, Вы - соединения, будет объединен. У Вас должно только быть соединение, открытое, пока Вам нужно оно.

4
ответ дан 5 December 2019 в 05:13
поделиться

У меня действительно была та же мысль, таким образом, я использовал то же соединение в жестком цикле для предотвращения необходимости инстанцировать другого, когда мне был нужен он. Но когда-то трудно отслеживать его и отладка, если Вы получите DataReader от соединения и затем попытаетесь сделать другой, в то время как тот же читатель все еще активен, затем Вы получите исключение. Так, я только рекомендовал бы это, если это является действительно частым как жесткий цикл, иначе это не стоит проблемы.

1
ответ дан 5 December 2019 в 05:13
поделиться

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

У Bill Vaughn есть много полезных статей об организации пула подключений и доступе к данным включая этого

1
ответ дан 5 December 2019 в 05:13
поделиться

В течение многих лет мы сделали, чтобы клиент сохранил единственное постоянное соединение к базе данных. Проблема возникает в обнаружении отказа неустойчивого соединения и корректно повторном подключении. Довольно часто Вы не будете знать, что связь прервалась, пока Вы не попытаетесь использовать ее (т.е. издание выбора бросит 'Общую ошибку SQL'),

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

DbConnection conn = Database.GetConnection();
try
{
   //do stuff with the connetion
   ...
}
finally
{
   Database.DisposeConnection(conn);
}

Мы делаем это, потому что существует инициализация, необходимая, когда мы соединяемся с базой данных (мы храним информацию, CONTEXT_INFO SQL Server и должен освободить ту информацию, когда мы разъединяемся),

0
ответ дан 5 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: