【发布时间】:2012-07-27 14:18:22
【问题描述】:
我有一个包含以下类方法的 winforms 应用程序:
public aSqlQuery(SqlCommand pSqlCom, string pMode = "object", bool pGetID = false)
{
try
{
string strConnection = aSystem.ConnectionString;
SqlConnection linkToDB = new SqlConnection(strConnection);
pSqlCom.Connection = linkToDB;
switch (pMode)
{
case "non query":
{
linkToDB.Open();
pSqlCom.ExecuteNonQuery();
if (pGetID == true)
{
SqlCommand sqlCom = new SqlCommand("SELECT @@IDENTITY;", linkToDB);
this.LastID = (int)sqlCom.ExecuteScalar();
}
linkToDB.Close();
}
break;
加上其他开关
pSqlCom (SqlCommand) 执行得很好,因为我可以看到写入数据库的数据。然而,随后的“SELECT @@IDENTITY”语句给出了一个无效的转换错误 我做错了什么,如何在我的类方法中检索 SQL 创建的新 ID?
【问题讨论】:
-
什么是“sqlCom.ExecuteScalar();”真的回到你身边了吗?
-
这是一个很好的资源,请阅读完整的主题,与@Martin Smith stackoverflow.com/questions/1174930/…相同
-
@Yaroslav - 不知道你为什么要告诉我读它。那里的答案绝不会否定我对您的答案所做的评论。
-
我可能在问一个愚蠢的问题,但是您确定执行 INSERT 的表包含 IDENTITY 列吗?我有像你这样的代码,从来没有见过这个问题。
-
@Steve 这可以解释为什么
@@IDENTITY返回 null 并且强制转换失败。