失败时返回false。不,我想扩展该方法,以便在触发每个插入的查询时,类varinsertId包含最后插入的行的ID。问题在于insertId始终为0,因此executeScalar()不会返回ID。有任何想法吗?或其他获取最后插入查询ID的解决方案....publicintinsertId;publicboolexecuteCommand(stringq){q+=";SELECT@@IDENTITYASLastID";布尔回归=真;SqlConnectionmyCon=newSqlConnection(Settings.DSN);SqlCommandcmd=newSqlCommand(q,myCon);尝试{cmd.Connection.Open();insertId=(int)cmd.ExecuteScalar();如果(insertId>0){MessageBox.Show(insertId.ToString());}myCon.Close();}catch(Exceptionex){this.error=ex.Message;返回=假;返回返回;您应该将INSERT更改为立即返回插入的id(在OUTPUT子句中)!这适用于SQLServer2005-SQLServer2000或更早版本中未提供OUTPUT子句(您未指定您在问题中使用的SQLServer版本......)。在MSDN联机丛书中阅读有关OUTPUT子句的更多信息。将插入更改为:INSERTINTOdbo.YourTable(Col1,Col2,...,ColN)OUTPUTInserted.IDVALUES(Val1,Val2,...,ValN);然后,当您从C#执行插入语句时,您应该能够:varresult=cmdInsert.ExecuteScalar();myCon.Close();}和你的结果变量现在应该包含正确的、新插入的值!尝试使用SCOPE_IDENTITY()而不是@@IDENTITY,如果这不起作用,您可以发布表架构和正在运行的插入查询。以上是C#学习教程:C#+SQLServerExecuteScalar()没有返回最后插入的id共享的所有内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络合集,不代表立场,如涉及侵权,请点击右转联系管理员删除。如需转载请注明出处:
