执行标量错误

时间:2016-05-24 11:21:55

标签: 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.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:尚未初始化Connection属性。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

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

2 个答案:

答案 0 :(得分:2)

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

getlev.Connection = c;

在执行ExecuteScalar()之前。

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

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

答案 1 :(得分:2)

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

grunt-ts

在将连接传递给第二个SqlCommand之前关闭了连接:

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