我想知道如果连接超时,是否可以取消插入操作。我问这个问题的原因是因为我上传了一个blob(2-5兆字节),但我的互联网连接速度很慢,因此连接在上传完成之前超时了。这对我来说不是一个很大的问题,因为我可以简单地下次增加连接超时并再试一次。然而我的问题是,当我检查我的表时,我注意到MySQL仍然记录了我不想要的新条目的插入。
这是我正在使用的代码;
Connection.Open();
byte[] bytes = File.ReadAllBytes(@"C:\Users\linuxuser\Pictures\Newfolder\36.jpg");
using (var cmd = new MySqlCommand("INSERT INTO `FileStorage` SET `File` = @image", Connection))
{
cmd.Parameters.Add("@image", MySqlDbType.Blob).Value = bytes;
cmd.CommandTimeout = 180;
cmd.ExecuteNonQuery();
}
Connection.Close();
MessageBox.Show("SUccess");
注意:表格具有自动增量主键字段。
答案 0 :(得分:2)
尝试使用“交易”在表Here中插入新条目。
MySqlTransaction trans;
trans = connection.BeginTransaction();
// Your Code
try
{
//By default, MySQL runs with autocommit mode enabled.
cmd.Parameters.Add("@image", MySqlDbType.Blob).Value = bytes;
cmd.CommandText = "INSERT INTO `FileStorage` SET `File` = "+@image"";
cmd.executeNonQuery();
trans.Commit();
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (MySqlException ex)
{
if (trans.Connection != null)
{
//("An exception of type " + ex.GetType() +" was encountered while attempting to roll back the transaction.");
}
}
}