这是代码后面有错误的页面

if (Session["username"] != null)
   {


        SqlConnection con = new SqlConnection();
        con.ConnectionString = ConfigurationManager.ConnectionStrings["registerCS"].ConnectionString;

       string sql1 = "Select pemgrp from Profile where userID = '" + Session["username"].ToString() + "'";
      string sql = "Select studname from Profile where pemgrp = '" + sql1 + "'";

        SqlCommand cmd = new SqlCommand();
        SqlDataReader dr;

        DataTable dt = new DataTable();

        cmd.CommandText = sql;
        cmd.Connection = con;

        //open connection and execute command
        con.Open();
        dr = cmd.ExecuteReader();

        if (dr.Read())
        {
        lb_classmates.Text = dr[0].ToString();

        }
    }


但是,当我运行时,它给了我这个错误:
关键字“ where”附近的语法不正确。


  说明:在执行期间发生未处理的异常
  当前的Web请求。请查看堆栈跟踪以获取更多信息
  有关错误及其在代码中起源的信息。
  
  异常详细信息:System.Data.SqlClient.SqlException:不正确
  关键字“ where”附近的语法。

最佳答案

由于您正在使用子查询因此

string sql = "Select studname from Profile where pemgrp = '" + sql1 + "'";


应该

string sql = "Select studname from Profile where pemgrp in (" + sql1+ ")";


并且您应该使用Parametereized queries来避免SQL injection

10-05 21:22