Рейтинг:
5
OriginalGriff
Что ж... да, так и будет:
SqlTransaction tran=null;
Вы специально установили для него значение null, так что у него нет объекта!
Попробовать это:
SqlTransaction trans;
try
{
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
trans = con.BeginTransaction();
using (SqlCommand cmd = new SqlCommand("...", con))
{
...
}
trans.Commit();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
trans.Rollback();
}
Member 11776570
Это дает такую ошибку
ExecuteNonQuery требует, чтобы команда имела транзакцию...... команда находится в ожидающей транзакции местоположения.
OriginalGriff
Скопируйте и вставьте фактический код, который вы используете - полную транзакцию и лоток-улов, а не несколько строк из него.
Member 11776570
{
SqlTransaction tran;
против.Открыть();
Тран = кон.BeginTransaction();
пробовать
{
cmd = new SqlCommand("Insert_emp", con);
УМК.CommandType = CommandType.Хранимая процедура;
cmd.Parameters.Add("@firstname", SqlDbType.VarChar, 50).Value = obj.Имя;
cmd.Parameters.Add("@lastname", SqlDbType.VarChar, 50).Value = obj.Фамилия;
cmd.Parameters.Add("@address1", SqlDbType.VarChar, 50).Value = obj.Адрес1;
cmd.Parameters.Add("@address2", SqlDbType.VarChar, 50).Value = obj.Адрес2;
cmd.Parameters.Add("@city", SqlDbType.VarChar, 50).Value = obj.Город;
cmd.Parameters.Add("@mobile_no", SqlDbType.BigInt).Значение = объект.Mobile_No;
УМК.Параметры.Добавить("@почта", значения sqldbtype.Тип varchar, 50).Значение = объект.Электронной почты;
cmd.Parameters.Add("@created_by", SqlDbType.VarChar, 50).Value = obj.Created_By;
cmd.Parameters.Add("@created_date", SqlDbType.DateTime).Значение = объект.Created_Date;
cmd.Parameters.Add("@modified_by", SqlDbType.VarChar, 50).Value = obj.Modified_By;
cmd.Parameters.Add("@modified_date", SqlDbType.DateTime).Значение = объект.Дата изменения;
УМК.Параметры.Добавить("@метод isactive", значения sqldbtype.- Чуть).Значение = объект.Метод isactive;
УМК.Параметры.Добавить("@идентификатор emp_id", значения sqldbtype.Инт);
УМК.Параметры["@идентификатор emp_id"].Направление = ParameterDirection.Выход;
УМК.Метод executenonquery();
Тран.Совершать();
int result = Convert.ToInt32(cmd.Parameters["@emp_id"].Value);
если (результат > 0)
{
возвращаемый результат;
}
еще
{
возврат -1;
}
}
ловить
{
тран.Отмена();
бросать;
}
наконец
{
против.Закрывать();
}
OriginalGriff
Попробовать это:
cmd = new SqlCommand("Insert_emp", con, tran);
Member 11776570
Тай У... Сделано...
OriginalGriff
Всегда пожалуйста!