C# Excute标量eror

C# Excute标量eror,c#,sql-server,C#,Sql Server,C#: int lev; SqlCommand getlev = new SqlCommand("SELECT level FROM [User] WHERE Username = @username"); getlev.Parameters.AddWithValue("@username", txtuser.Text); c.Open(); lev = (int)getlev.ExecuteSc

C#:

  int lev;
            SqlCommand getlev = new SqlCommand("SELECT level FROM [User] WHERE Username = @username");
            getlev.Parameters.AddWithValue("@username", txtuser.Text);
            c.Open();
            lev = (int)getlev.ExecuteScalar();
            c.Close();
            lev++;
            SqlCommand lvup= new SqlCommand("UPDATE [User] SET level = @lev WHERE Username = @username", c);
            lvup.Parameters.AddWithValue("@lev",lev);
            lvup.Parameters.AddWithValue("@username", txtuser.Text);
            c.Open();
            lvup.ExecuteNonQuery();
            c.Close();
错误:

  int lev;
            SqlCommand getlev = new SqlCommand("SELECT level FROM [User] WHERE Username = @username");
            getlev.Parameters.AddWithValue("@username", txtuser.Text);
            c.Open();
            lev = (int)getlev.ExecuteScalar();
            c.Close();
            lev++;
            SqlCommand lvup= new SqlCommand("UPDATE [User] SET level = @lev WHERE Username = @username", c);
            lvup.Parameters.AddWithValue("@lev",lev);
            lvup.Parameters.AddWithValue("@username", txtuser.Text);
            c.Open();
            lvup.ExecuteNonQuery();
            c.Close();
ExecuteScalar:尚未初始化连接属性

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:System.InvalidOperationException:ExecuteScalar: 尚未初始化连接属性


您没有为该命令提供连接。使用

getlev.Connection = c;
执行
ExecuteScalar()
之前

或者使用获取连接的构造函数重载:

SqlCommand getlev = new SqlCommand(
                            "SELECT level FROM [User] WHERE Username = @username",
                            c);

您需要为第一个SqlCommand提供连接参数:

SqlCommand getlev = new SqlCommand("SELECT level FROM [User] WHERE Username = @username", c);
c.Close(); // Remove this
lev++;
SqlCommand lvup= new SqlCommand("UPDATE [User] SET level = @lev WHERE Username = @username", c);
在将连接传递给第二个SqlCommand之前,已关闭连接:

SqlCommand getlev = new SqlCommand("SELECT level FROM [User] WHERE Username = @username", c);
c.Close(); // Remove this
lev++;
SqlCommand lvup= new SqlCommand("UPDATE [User] SET level = @lev WHERE Username = @username", c);

显示
c
的定义错误消息是不言自明的。在getlev SqlCommand对象上设置Connection属性。您可以像Seconde一样将Connection参数添加到first
SqlCommand
,并且如果要执行de Seconde
SqlCommande
可以在一次行程中自动完成此操作:
update[User]set lev+=1 output inserted.lev,其中Username=@Username
-返回新的lev。