发布网友 发布时间:2022-04-30 22:01
共5个回答
懂视网 时间:2022-05-01 02:22
List<UserBaseInfoModel> GetCityByExamId(Guid ExamID) { var cur_user = this.GetCurrentUser(); using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd; using (SqlTransaction trans = conn.BeginTransaction()) { try { string sql = @" SELECT u.City FROM Exam_User_Power p,dbo.User_BaseInfo u WHERE p.ExamID=@ExamID AND p.UserID=u.UserID GROUP BY u.City "; cmd = new SqlCommand(sql, conn, trans); cmd.Parameters.AddWithValue("ExamID", ExamID); SqlDataAdapter sda = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); sda.Fill(ds); List<UserBaseInfoModel> list = (List<UserBaseInfoModel>)IListDataSet.DataSetToIList<UserBaseInfoModel>(ds, 0); trans.Commit(); return list; } catch { trans.Rollback(); throw; } finally { conn.Close(); } } } return null; }事务处理拼接sql语句对数据库的操作.异常回滚
标签:
热心网友 时间:2022-04-30 23:30
如果一个,可以考虑不用回滚,回滚一般发生在insert update之类操作,如果你这个sql失败,你整个语句都失败,所以不会影响数据库。热心网友 时间:2022-05-01 00:48
哪要看你需不需要放弃事务开始到出错之前执行的语句啊,如果要,就要回滚了,否则不需要也行追问如果是一个sql,以insert为例,如果该语句有错,那首先可以肯定,这个语句没通过执行,缓存中不会产生修改数据的信息,这个时候和事务开始的状态应该是一致的,所以不需要回滚。如果有两个sql语句,第一个执行了,在缓存里面产生修改数据,如果第二个sql出错了,那么第二个没执行,但是违反了事务的原子性,所以必须回滚,让第一个也撤销。这是我的理解,不知道有错误没?追答对,就是这样
热心网友 时间:2022-05-01 02:23
对,不用回滚。一个sql语句对于数据库引擎来说就是原子操作。热心网友 时间:2022-05-01 04:14
如果只有一个SQL,应该不用回滚