powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / BC6.0 TADOConnection - проблема использования
11 сообщений из 11, страница 1 из 1
BC6.0 TADOConnection - проблема использования
    #32342047
sergey27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ADOConnection1->Open();
ADOConnection1->BeginTrans();
ADOQuery1->SQL->Add("CREATE TABLE myTable(id NUMBER(5))");
ADOQuery1->ExecSQL();
ADOConnection1->RollbackTrans();

Почему при использовании данного кода объект myTable все равно оказывается в базе хотя я отменяю транзакцию. Если кто использовал классы TADOConnection TADOQuery из BC6.0 помогите!!!
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32342103
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитай про DDL и DML и их использования внутри транзакций
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32343640
sergey27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты хочешь сказать что DDL инструкции выполняются вне транзакции или просто объект TADOQuery использует изолированную транзакцию. Кстати если знаешь где почитать пиши.
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32343920
Mihonin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А у тебя Query на Connection завязана, легче ADOConnection->Execute(SQL);
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32344411
sergey27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ADOConnection2->Open();
ADOConnection2->BeginTrans();
ADOConnection2->Execute("CREATE TABLE JJ(ID NUMBER(5))",cmdText);
ADOConnection2->RollbackTrans();
При использовании этого кода транзакция все равно не откатывается!
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32344465
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас какая СУБД?
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32344505
sergey27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle 9i
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32344528
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте в документации к нему. В MS SQL, например, на DDL в транзакциях накладываются очень серьезные ограничения
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32344597
olk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDL в оракле всегда комитится ...
единственный выход написать свою обертку для create c ссоответствующим drop
ну и соответственно свой ролбак
типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 myCreateTable(TADOConnection * conn,string table_name,string def)
{
if(!table_name.IsEmpty())   
   conn->ExecuteSQL( "CREATE TABLE " +table_name+ " (" +def+ ")" );

}
 void myBeginTrans(TADOConnection * conn)
{
 conn->BeginTrans();
}
 void myRolbackTrans(TADOConnection * conn,string table_name)
 {
  if(table_name.IsEmpty())   conn->ExecuteSQL( "DROP TABLE " +table_name);
  conn->RollbackTrans(); 
 }


тогда твой код можно переписать примерно так


Код: plaintext
1.
2.
3.
ADOConnection1->Open(); 
myBeginTrans(ADOConnection1); 
myCreateTable(ADOConnection1, "myTable" , "id NUMBER(5 )");
myRolbackTrans(ADOConnection1, "myTable" );
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32344599
olk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опечатка ;)))

void myRolbackTrans(TADOConnection * conn,string table_name)
{
if( ! table_name.IsEmpty()) conn->ExecuteSQL("DROP TABLE "+table_name);
conn->RollbackTrans();
}
...
Рейтинг: 0 / 0
BC6.0 TADOConnection - проблема использования
    #32345139
sergey27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо идея хорошая можно попробовать!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / BC6.0 TADOConnection - проблема использования
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]