Page 1 of 1

Mysql 5 transaction

Posted: Wed 04 Mar 2009 13:36
by aspirany
Dear Support Team!

I'stack. Would like to use mysqltransaction with devart.

the code

MySqlConnection conn = new MySqlConnection("User Id=root;Password=attika;Host=localhost;Database=office;");
MySqlTransaction trans = null;
.
.
.
public void insert_data()
{
string query = "INSERT INTO munkalapok (munkalapszam,szlacegid,partnerId)";
query +="VALUES ('"+munkalapszam1+"','1','1')";

if (conn.State == ConnectionState.Closed)
{
conn.Open();
try
{
MySqlCommand command = new MySqlCommand(query, conn);
trans.Connection.BeginTransaction();
command.ExecuteNonQuery();
trans.Connection.Rollback();

}
catch (MySqlException exception)
{
MessageBox.Show(exception.Message.ToString());
trans.Connection.Rollback();
}
}

}


transaction never rolled back;

thanks your help

Posted: Wed 04 Mar 2009 14:38
by Shalex
1. Please make sure trans.Connection is assigned to conn in your sample (trans.Connection=conn). We didn't find this assignment in the piece of code you have posted.
2. Be aware, some table storage engines don't support transactions. E.g., ENGINE INNODB has such support, but MyISAM - does not. So make sure your storage engine supports transactions (refer to the appropriate MySQL documentation).

If it doesn't help, please tell us your current dotConnect for MySQL version (the Visual Studio Tools menu | MySQL | About), the version of MySQL server you are using, and your table storage engine. We will try to reproduce the problem.

not working

Posted: Wed 04 Mar 2009 15:48
by aspirany
my table type InnoDB suuport transaction.

code

MySqlConnection conn = new MySqlConnection("User Id=root;Password=attika;Host=localhost;Database=office;");
MySqlTransaction trans = null;
.
.
.
public void insert_data()
{
string query = "INSERT INTO munkalapok (munkalapszam,szlacegid,partnerId)";
query +="VALUES ('"+munkalapszam1+"','1','1')";

if (conn.State == ConnectionState.Closed)
{
conn.Open();
try
{
trans.Connection = conn;//error
MySqlCommand command = new MySqlCommand(query, conn);
trans.Connection.BeginTransaction();
command.ExecuteNonQuery();
trans.Connection.Rollback();

}
catch (MySqlException exception)
{
MessageBox.Show(exception.Message.ToString());
trans.Connection.Rollback();
}
}

}


make an error:
Error 1 Property or indexer 'Devart.Data.MySql.MySqlTransaction.Connection' cannot be assigned to -- it is read only C:\vs2008\office\Hibabejelento\Hibafelv.cs 153 21 Hibabejelento

thank you

Posted: Thu 05 Mar 2009 10:42
by Shalex
Try using transaction like this:

Code: Select all

using (MySqlConnection conn = new MySqlConnection("uid=root;pwd=root;host=localhost;database=test;")){
  conn.Open();
  conn.BeginTransaction();
  MySqlCommand command = new MySqlCommand("insert into dept values (1,'a','a')", conn);
  command.ExecuteNonQuery();
  conn.Rollback();
}
Please notify us about the results.