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

Почему при использовании данного кода объект myTable все равно оказывается в базе хотя я отменяю транзакцию. Если кто использовал классы TADOConnection TADOQuery из BC6.0 помогите!!!
...
Рейтинг: 0 / 0
03.12.2003, 14:38
    #32342103
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
почитай про DDL и DML и их использования внутри транзакций
...
Рейтинг: 0 / 0
04.12.2003, 15:11
    #32343640
sergey27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
Ты хочешь сказать что DDL инструкции выполняются вне транзакции или просто объект TADOQuery использует изолированную транзакцию. Кстати если знаешь где почитать пиши.
...
Рейтинг: 0 / 0
04.12.2003, 17:07
    #32343920
Mihonin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
А у тебя Query на Connection завязана, легче ADOConnection->Execute(SQL);
...
Рейтинг: 0 / 0
05.12.2003, 10:26
    #32344411
sergey27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
ADOConnection2->Open();
ADOConnection2->BeginTrans();
ADOConnection2->Execute("CREATE TABLE JJ(ID NUMBER(5))",cmdText);
ADOConnection2->RollbackTrans();
При использовании этого кода транзакция все равно не откатывается!
...
Рейтинг: 0 / 0
05.12.2003, 10:52
    #32344465
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
У вас какая СУБД?
...
Рейтинг: 0 / 0
05.12.2003, 11:08
    #32344505
sergey27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
Oracle 9i
...
Рейтинг: 0 / 0
05.12.2003, 11:20
    #32344528
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
Читайте в документации к нему. В MS SQL, например, на DDL в транзакциях накладываются очень серьезные ограничения
...
Рейтинг: 0 / 0
05.12.2003, 12:03
    #32344597
olk
olk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
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
05.12.2003, 12:05
    #32344599
olk
olk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BC6.0 TADOConnection - проблема использования
опечатка ;)))

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


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