本文整理汇总了C#中OracleConnection.Commit方法的典型用法代码示例。如果您正苦于以下问题:C# OracleConnection.Commit方法的具体用法?C# OracleConnection.Commit怎么用?C# OracleConnection.Commit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OracleConnection
的用法示例。
在下文中一共展示了OracleConnection.Commit方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CheckNotifier
private void CheckNotifier()
{
try
{
NotifierCheckState = NotifierCheckStates.Idle;
while (true)
{
//Log.Message("Check Notifier state: {0}", NotifierCheckState);
switch (NotifierCheckState)
{
case NotifierCheckStates.Idle:
var StartWaitTime = DateTime.Now;
ShowFullStatus("Sleeping...");
while (DateTime.Now - StartWaitTime <= CheckChangeNotifierInterval)
{
Thread.Sleep(1000);
if (NotifierCheckState != NotifierCheckStates.Idle)
break;
}
if (NotifierCheckState != NotifierCheckStates.CheckSuccess)
NotifierCheckState = NotifierCheckStates.StartCheck;
break;
case NotifierCheckStates.StartCheck:
using (var c = new OracleConnection(ConnectionString))
{
c.AutoCommit = false;
c.Open();
NotifierCheckState = NotifierCheckStates.CheckStarted; // must be set before, because notification can come right away
NotifierCheckStartTime = DateTime.Now;
int RowsUpdated = OraQuery.ExecuteNonQuery(c, string.Format("update {0} set id = id + 1 where rownum = 1", NotifierCheckTable));
if (RowsUpdated > 0) c.Commit(); else c.Rollback();
}
break;
case NotifierCheckStates.CheckStarted: // started, in processes
if (DateTime.Now - NotifierCheckStartTime >= CheckChangeNotifierTimeout) // if no answer after starting
NotifierCheckState = NotifierCheckStates.CheckFailed;
else
Thread.Sleep(1000);
break;
case NotifierCheckStates.CheckSuccess:
case NotifierCheckStates.WasRestarted:
NotifierCheckState = NotifierCheckStates.Idle;
break;
case NotifierCheckStates.CheckFailed: // need restart
Log.Message("Check Notifier state: {0}", NotifierCheckState); // It is important state
EventHandle.Set(); // wake up thread for restart
Thread.Sleep(1000);
break;
default:
Log.Message("Unknown status: {0}", NotifierCheckState);
break;
}
}
}
catch (Exception e)
{
if (e is ThreadAbortException || e is ThreadInterruptedException) return;
else Log.Message("Ошибка потока проверки нотификатора: {0}\n{1}", e.Message, e.StackTrace);
}
}
示例2: ProcessRequest
/// <summary>Обрабатывает поступивший запрос на пересчёт транзакций</summary>
void ProcessRequest(OracleConnection Connection)
{
SendResponse(Connection, ResponseType.Start); // отправляет ответ: мы взялись за обработку запроса
ChangeStatus("Request processing started");
try
{
var SharedData = DataLoader.Allocate(); // получаем действующие в этот момент ОРД
GetTransactions(Connection, SharedData); // получаем список неотменённых ранее транзакций для корректировки
try
{
// начинаем обработку транзакций
Log.Message("Транзакций для пересчёта: {0}", Request.Transactions.Count);
Request.Counter.Start();
Request.LastContract = null;
foreach (RecalculationTransactionItem Item in Request.Transactions)
{
using (var TransactionConnection = OpenedConnection)
{
if (ProcessTransactionItem(TransactionConnection, Item, SharedData))
Request.SuccessCount++;
else
Request.FailedCount++;
/*if (!ProcessTransactionItem(Connection, Item, SharedData))
throw new Exception("Ошибка транзакции. Обработка прекращена.");*/
// пишем в лог информацию о транзакции
try
{
OraQuery.ExecuteNonQuery(Connection, "insert into RecalculationLog (RecalcID, TransactionID, State, Message) values (:RecalcID, :TransactionID, :State, :Message)",
new string[] { "RecalcID", "TransactionID", "State", "Message" }, new object[] { Request.ID, Item.ID, Item.State, Item.ErrorMessage });
}
catch (OracleException e)
{
if (e.Code == 1) // ORA-00001: unique constraint
{
OraQuery.ExecuteNonQuery(Connection, "update RecalculationLog set State = :State, Message = :Message where RecalcID = :RecalcID and TransactionID = :TransactionID",
new string[] { "RecalcID", "TransactionID", "State", "Message" }, new object[] { Request.ID, Item.ID, Item.State, Item.ErrorMessage });
}
}
}
if (Item.IsChanged)
Request.ChangedCount++; // у нас одной изменённой после пересчета транзакцией больше
Request.ProcessedCount++;
SendResponse(Connection, ResponseType.Progress);
ChangeStatus(string.Format("Processing: {0}/{1}", Request.ProcessedCount, Request.TotalCount));
}
// помечаем запрос как обработанный
OraQuery.ExecuteNonQuery(Connection, "update Recalculations set Processed = 1 where ID = :ID", new string[] { "ID" }, new object[] { Request.ID });
Request.Processed = true;
Connection.Commit(); // сохраняем результат
Request.Counter.Stop();
SendResponse(Connection, ResponseType.Finish);
Log.Message("Транзакций изменено по итогам пересчёта: {0}", Request.ChangedCount);
Log.Message("Обработка запроса завершена успешно");
ChangeStatus("Finished successfully");
}
finally
{
DataLoader.Release(SharedData);
}
}
catch (Exception e)
{
if (e is OracleException && (e as OracleException).Code == 54) // ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
LogError(Connection, "Не удаётся заблокировать транзакции для обработки");
else
LogError(Connection, "Ошибка обработки:\n" + e.Message + "\n" + e.StackTrace);
Connection.Rollback(); // отменяем изменения
ChangeStatus("Finished with an error");
}
}
开发者ID:PavelAlekseyuk,项目名称:Online-Processing-System-code-samples,代码行数:73,代码来源:Service.Recalculator.cs
示例3: Show
public void Show(OracleConnection connection, PassportInfo info)
{
if (Functions.IsNull(info))
return;
Splash.ProgressInit(2);
try
{
string HostName = Dns.GetHostName();
string IPAddress = Functions.GetCurrentIPAddress();
string TemporaryFileName;
// запрос для получения вида паспорта (pdf файл)
Splash.Message("Получение вида паспорта...");
MemoryStream PassportStream = GetPassport(connection, info.PlantID, info.OrderID, info.LanguageID);
Splash.ProgressAdd();
if (!Functions.IsNull(PassportStream)) // нашли вид паспорта
{
Splash.ProgressMaximum(4);
Splash.Message("Маркировка паспорта...");
PassportStream = MarkPassport(PassportStream); // маркируем документ - добавляем слова "Копия" и разную информацию
if (Functions.IsNull(PassportStream))
{
MessageBox.Show("Ошибка при маркировке паспорта. Паспорт без маркировке 'COPY' выдать нельзя", "Просмотр паспорта", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
TemporaryFileName = GetTempFilePath(".pdf");
FileStream FS = new FileStream(TemporaryFileName, FileMode.Create, FileAccess.Write);
PassportStream.WriteTo(FS);
FS.Close();
Splash.ProgressAdd();
}
else
{
Splash.ProgressMaximum(6);
// запрос для получения данных паспорта
Splash.Message("Получение данных паспорта...");
OracleCommand DataCommand = OracleProc.Execute(connection, "DataAccessPKG.GetPassportData",
new object[] { info.PlantID, info.OrderID, info.LanguageID, null });
QueryResult Data = new QueryResult(DataCommand.Parameters["rc"].Value);
Splash.ProgressAdd();
Splash.Message("Загрузка шаблона паспорта...");
MemoryStream TemplateStream = GetPassportTemplate(connection, info.PlantID, info.ProductID, info.LanguageID);
Splash.ProgressAdd();
Splash.Message("Формирование документа...");
//PassportTemplate CurrentTemplate = plant.PassportTemplates.FindLanguage(LanguageID);
if (TemplateStream == null)
{
MessageBox.Show(string.Format("Отсутствует шаблон паспорта продукта {0} (ID предприятия: {1}) для языка {2}. Обратитесь в тех.поддержку за помощью", info.ProductID, info.PlantID, info.LanguageID), "Просмотр паспорта", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (Data.Rows.Count == 0)
{
MessageBox.Show("Отсутствуют данные по выбранному паспорту. Попробуйте обновить данные за текущий период", "Просмотр паспорта", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
MSWordReport word = new MSWordReport(TemplateStream);
QueryResult PassportData = FormatPassportData(Data);
word.Execute(PassportData);
// добавляем информацию о пользователе
Data.AddColumn("UserInfo", typeof(string), string.Format("Пользователь: {0} ({1}). Компьютер: {2} ({3})", Program.StartForm.current.User.name, Common.PZUsers.Current.WindowsDomainName(), HostName, IPAddress));
Data.AddColumn("CreationDate", typeof(DateTime), DateTime.Now);
word.Document.MailMerge.Execute(Data.Rows[0]);
word.PrepareToSave();
word.Document.Protect(Aspose.Words.ProtectionType.ReadOnly);
// вставляем знак "Копия"
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(word.Document);
builder.MoveToHeaderFooter(Aspose.Words.HeaderFooterType.HeaderPrimary);
System.Drawing.Image image = System.Drawing.Image.FromFile(System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "Images\\Exclamation.gif"));
double useablePageWidth = builder.PageSetup.PageWidth - builder.PageSetup.LeftMargin - builder.PageSetup.RightMargin;
double useablePageHeight = builder.PageSetup.PageHeight - builder.PageSetup.TopMargin - builder.PageSetup.BottomMargin;
const int PointsPerInch = 72;
double imageWidth = (image.Width / image.HorizontalResolution) * PointsPerInch;
double imageHeight = (image.Height / image.VerticalResolution) * PointsPerInch;
double imageLeft = (useablePageWidth - imageWidth) / 2;
double imageTop = (useablePageHeight - imageHeight) / 2;
builder.InsertImage(image, Aspose.Words.RelativeHorizontalPosition.Margin, imageLeft, Aspose.Words.RelativeVerticalPosition.Margin, imageTop, imageWidth, imageHeight, Aspose.Words.WrapType.None, Aspose.Words.WrapSide.Both, true, null);
TemporaryFileName = GetTempFilePath(".doc");
word.Document.Save(TemporaryFileName);
Splash.ProgressAdd();
}
// логирование паспорта
Splash.Message("Запись в журнал операций...");
OracleProc.Execute(connection, "LogPKG.LogPassport",
new object[] { info.PlantID, info.CertificateID, info.OrderID, Program.StartForm.current.Program.id, Program.StartForm.current.User.id, HostName, IPAddress, Common.PZUsers.Current.WindowsDomainName() });
connection.Commit();
Splash.ProgressAdd();
Splash.Message(TemporaryFileName.EndsWith(".doc") ? "Запуск Microsoft Word..." : "Запуск Adobe Acrobat Reader...");
//PrintDocumentFromWord(TemporaryFileName);
OpenDocument(TemporaryFileName);
Splash.ProgressAdd();
//.........这里部分代码省略.........