如何将会话变量存储在单独的变量中

时间:2018-10-15 22:14:05

标签: c# sql

有人可以告诉我,为什么基于此btn Click事件将会话值保存到数据库时为什么返回-1。

       using (SqlConnection con = new SqlConnection(CS))
    {
        SqlCommand cmdManID = new SqlCommand("SELECT 
        managerID,userEmailAddress,userName FROM [MANAGER] ,[USER] WHERE 
        [MANAGER].managerID = [USER].userID AND [USER].userName= @Uname;",con);
        cmdManID.Parameters.Add(new SqlParameter("@Uname", 
        Session["UName"]));

        con.Open();
    }

        int manID = cmdManID.ExecuteNonQuery();

        //manID;



        con.Close();

1 个答案:

答案 0 :(得分:2)

因为-1恰好是您对ExecuteNonQuery的SELECT所期望的结果:

“对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。当在要插入或更新的表上存在触发器时,返回值包括受两个命令影响的行数。插入或更新操作以及受一个或多个触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值为-1。”

https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.executenonquery?view=netframework-4.7.2

如果您只期望一个返回值,那就是ExecuteScalar的用途:https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.executescalar?view=netframework-4.7.2