Моя цель состоит в том, чтобы:Несколько соединений, состояния сеанса
1 постоянные данные подключения к базе данных и транзакций, которые вставляет/обновлены, и могут быть совершены или откат, когда вся работа сделана
«at-will» открытые несвязанные соединения, которые НЕ разделяют состояние сеанса с постоянным подключением - это означает, что они «видят» старые данные. Эти соединения нужно читать, а не писать.
Я попытался открыть совершенно новое соединение, но он видит изменения, вызванные постоянным подключением. Можно ли это достичь?
Примечание: Я использую то же имя пользователя и пароль Oracle для всех подключений.
Примечание 2: Жаба (программное обеспечение для Oracle DB) не «видит» изменения, сделанные постоянным соединением, пока они не будут зафиксированы. Если они откатываются назад, они не появляются в базе данных, когда они совершаются, они это делают. Эта часть работает нормально, просто другое соединение, открытое из моего приложения, видит их до их совершения.
Вот код для моего соединения, которое видит изменения, которые не должны видеть:
using (OracleConnection readConnection = new
OracleConnection(Settings.OracleConnectionString))
{
readConnection.Open();
using (OracleCommand command = new OracleCommand(lastOracleRowQuery,
readConnection))
{
using (OracleDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
compareValues.Add(reader.IsDBNull(i) ?
null :
reader.GetValue(i));
}
}
}
}
Это происходит в то время как есть другой OracleConnection открытым, и транзакция с использованием этого соединения. Однако не следует ли прочитатьСоединение полностью не связанным?
Результат этого чтения дает результаты, которые не отображаются при одновременном использовании одного и того же запроса в Toad.
решаемые
Видимо, Oracle совершает сессию "CREATE TABLE", даже если таблица создать не удается, ничего не делает и бросает исключение. Я не ожидал такого поведения, так меня это смутило. Когда я начинал создавать все таблицы, все начинало работать. Во время моего тестирования на самом деле не создавались таблицы, поэтому я не думал, что это проблема, но когда я очистил код и перенесли его на начало, все исправлено.
Я все еще не понимаю, что происходило с Жабой. Возможно, я ошибся или что-то еще. Или есть больше ошибок, о которых я еще не знаю. : D
Если вы используете чтение по умолчанию, возможно, вы используете одно и то же соединение/сеанс для обоих? (Пулы). – tbone
Соединения - это полностью отдельный объект, за исключением двух вещей: оба используют одно и то же имя пользователя/пароль, а функция, которая создает «прочитанное» соединение, вызывается с использованием «использующего» блока постоянного соединения и транзакции. – svinja
Что вы подразумеваете под пулом? – svinja