本文整理汇总了C#中MySqlConnection.BeginTransaction方法的典型用法代码示例。如果您正苦于以下问题:C# MySqlConnection.BeginTransaction方法的具体用法?C# MySqlConnection.BeginTransaction怎么用?C# MySqlConnection.BeginTransaction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MySqlConnection
的用法示例。
在下文中一共展示了MySqlConnection.BeginTransaction方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CommitAfterConnectionDead
public void CommitAfterConnectionDead()
{
execSQL("DROP TABLE IF EXISTS Test");
execSQL("CREATE TABLE Test(id INT, name VARCHAR(20))");
string connStr = GetConnectionString(true) + ";pooling=false";
using (MySqlConnection c = new MySqlConnection(connStr))
{
c.Open();
MySqlTransaction trans = c.BeginTransaction();
using (MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES (1, 'boo')", c))
{
cmd.ExecuteNonQuery();
}
KillConnection(c);
try
{
trans.Commit();
Assert.Fail("Should have thrown an exception");
}
catch (Exception ex)
{
}
Assert.AreEqual(ConnectionState.Closed, c.State);
c.Close(); // this should work even though we are closed
}
}
示例2: init
private void init(string connString)
{
connection = new MySqlConnection(connString);
connection.Open();
connection.ChangeDatabase(Server.MySQLDatabaseName);
transaction = connection.BeginTransaction();
}
示例3: BeginTransactionOnPreviouslyOpenConnection
public void BeginTransactionOnPreviouslyOpenConnection()
{
string connStr = GetConnectionString(true);
MySqlConnection c = new MySqlConnection(connStr);
c.Open();
c.Close();
try
{
c.BeginTransaction();
}
catch (Exception ex)
{
Assert.AreEqual("The connection is not open.", ex.Message);
}
}
示例4: RollingBackOnClose
public void RollingBackOnClose()
{
execSQL("DROP TABLE IF EXISTS Test");
execSQL("CREATE TABLE Test (id INT) TYPE=InnoDB");
string connStr = GetConnectionString(true) + ";pooling=true;";
MySqlConnection c = new MySqlConnection(connStr);
c.Open();
MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES (1)", c);
c.BeginTransaction();
cmd.ExecuteNonQuery();
c.Close();
MySqlConnection c2 = new MySqlConnection(connStr);
c2.Open();
MySqlCommand cmd2 = new MySqlCommand("SELECT COUNT(*) from Test", c2);
c2.BeginTransaction();
object count = cmd2.ExecuteScalar();
c2.Close();
Assert.AreEqual(0, count);
}
示例5: RollingBackOnClose
public void RollingBackOnClose()
{
execSQL("CREATE TABLE Test (id INT) ENGINE=InnoDB");
string connStr = GetPoolingConnectionString();
using (MySqlConnection c = new MySqlConnection(connStr))
{
c.Open();
MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES (1)", c);
c.BeginTransaction();
cmd.ExecuteNonQuery();
}
using (MySqlConnection c2 = new MySqlConnection(connStr))
{
c2.Open();
MySqlCommand cmd2 = new MySqlCommand("SELECT COUNT(*) from Test", c2);
c2.BeginTransaction();
object count = cmd2.ExecuteScalar();
Assert.AreEqual(0, count);
}
MySqlConnection connection = new MySqlConnection(connStr);
connection.Open();
KillConnection(connection);
}
示例6: SnapshotIsolationLevelThrowsNotSupportedException
public void SnapshotIsolationLevelThrowsNotSupportedException()
{
using (MySqlConnection connection = new MySqlConnection(GetConnectionString(true)))
{
connection.Open();
MySqlTransaction transaction = connection.BeginTransaction(System.Data.IsolationLevel.Snapshot);
transaction.Commit();
}
}
示例7: CommitDoesNotTimeout
public void CommitDoesNotTimeout()
{
const int requiredNumberOfRuns = 1;
const int binarySize = 5000000;
const int requiredNumberOfRowsPerRun = 100;
Debug.WriteLine("Required Number Of Runs :" + requiredNumberOfRuns);
Debug.WriteLine("Required Number Of Rows Per Run :" + requiredNumberOfRowsPerRun);
suExecSQL("SET GLOBAL max_allowed_packet=64000000");
MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
using (MySqlConnection connection = new MySqlConnection(GetConnectionString(true)))
{
connection.Open();
using (MySqlCommand command = new MySqlCommand())
{
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "DROP TABLE IF EXISTS test_timeout;";
command.ExecuteNonQuery();
StringBuilder sqlCommand = new StringBuilder(512);
sqlCommand.Append("CREATE TABLE test_timeout (");
sqlCommand.Append("identity INT NOT NULL auto_increment, ");
sqlCommand.Append("a INT NOT NULL, ");
sqlCommand.Append("b INT NOT NULL, ");
sqlCommand.Append("c INT NOT NULL, ");
sqlCommand.Append("binary_data LONGBLOB NOT NULL, ");
sqlCommand.Append("PRIMARY KEY(identity), ");
sqlCommand.Append("KEY `abc` (`a`,`b`, `c`) ");
sqlCommand.Append(") ENGINE = INNODB");
command.CommandText = sqlCommand.ToString();
command.ExecuteNonQuery();
}
for (int numberOfRuns = 0; numberOfRuns < requiredNumberOfRuns; ++numberOfRuns)
{
using (MySqlTransaction transaction = connection.BeginTransaction())
{
Stopwatch stopwatch = Stopwatch.StartNew();
using (MySqlCommand command = new MySqlCommand())
{
command.Connection = connection;
command.CommandText = "INSERT INTO test_timeout VALUES (?f1, ?f2, ?f3, ?f4, ?f5)";
command.Parameters.Add("?f1", MySqlDbType.Int32);
command.Parameters.Add("?f2", MySqlDbType.Int32);
command.Parameters.Add("?f3", MySqlDbType.Int32);
command.Parameters.Add("?f4", MySqlDbType.Int32);
command.Parameters.Add("?f5", MySqlDbType.LongBlob);
command.CommandTimeout = 0;
command.Prepare();
byte[] buffer;
using (MemoryStream stream = new MemoryStream())
{
using (BinaryWriter binary = new BinaryWriter(stream))
{
int count = 0;
while (stream.Position < binarySize)
{
binary.Write(++count);
}
}
buffer = stream.ToArray();
}
for (int i = 0; i < requiredNumberOfRowsPerRun; ++i)
{
command.Parameters[1].Value = i;
command.Parameters[2].Value = i;
command.Parameters[3].Value = i;
command.Parameters[4].Value = buffer;
command.ExecuteNonQuery();
}
}
transaction.Commit();
Assert.IsNotNull(transaction);
stopwatch.Stop();
double seconds = stopwatch.Elapsed.TotalSeconds;
double recordsPerSecond = requiredNumberOfRowsPerRun / seconds;
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Truncate Result : Insert {0} Took {1:F4}; Per Second {2:F1} ",
requiredNumberOfRowsPerRun, seconds, recordsPerSecond);
Debug.WriteLine(sb.ToString());
}
//.........这里部分代码省略.........
示例8: ExecuteSqlTran
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(ArrayList SQLStringList)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
MySqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (MySqlException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
finally
{
cmd.Dispose();
conn.Close();
}
}
}