选择SQL表中的最后一行
是否可以返回MS SQL Server中表的最后一行.
这是代码: const string QUERY = @"INSERT INTO Questions (ID,Question,Answer,CategoryID,Permission) " + @"VALUES (@ID,@Question,@Answer,@CategoryID,@Permission) "; using (var cmd = new SqlCommand(QUERY,conn)) { cmd.Parameters.AddWithValue("@Question",question); cmd.Parameters.AddWithValue("@Answer",answer); cmd.Parameters.AddWithValue("@CategoryID",lastEdited); cmd.Parameters.AddWithValue("@Permission",categoryID); cmd.ExecuteNonQuery(); } 办理要领
这里的要害是“刚添加”.假如你有一堆差异的用户同时点击数据库,我以为你不但愿用户A检索用户B建设的记录.这意味着你也许想要行使scope_identity()函数来获取该id而不是顿时再次在桌面上运行查询. 按照上下文,您也许还必要@@ identity(包罗触发器)或ident_current(‘questions’)(仅限于特定表,但不包罗特定范畴).可是scope_identity()险些老是正确行使的. 这是一个例子: DECLARE @NewOrderID int INSERT INTO TABLE [Orders] (CustomerID) VALUES (1234) SELECT @NewOrderID=scope_identity() INSERT INTO TABLE [OrderLines] (OrderID,ProductID,Quantity) SELECT @NewOrderID,Quantity FROM [ShoppingCart] WHERE CustomerID=1234 AND SessionKey=4321 按照您宣布的代码,您可以执行以下操纵: // don't list the ID column: it should be an identity column that sql server will handle for you const string QUERY = "INSERT INTO Questions (Question,Permission) " + "VALUES (@Question,@Permission);" + "SELECT scope_identity();"; int NewQuestionID; using (var cmd = new SqlCommand(QUERY,categoryID); NewQuestionID = (int)cmd.ExecuteScalar(); } 在这里查察我对另一个题目的答复: 此刻的题目是你也许但愿后续的sql语句在统一个事宜中.您可以行使客户端代码执行此操纵,但我发此刻处事器大将其所有保存为更清楚.你可以通过构建一个很是长的sql字符串来做到这一点,但我倾向于在这一点上更喜好存储进程. 我也不是.AddWithValue()要领的粉丝 – 我更喜痪?式界说参数范例 – 但我们可以将其留在另一天. 最后,此刻已经很晚了,但我想夸大的是,实行将这统统保存在db上真的更好.在一个sql呼吁中运行多个语句是可以的,而且您但愿镌汰必要对数据库举办的来回次数以及在数据库和应用措施之间往返转达所需的数据量.它还使得更轻易得到正确的买卖营业并将事物保持在必要的位置. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |