2016-04-25 47 views
1

我已经在数据访问类中创建了一个方法,用参数从数据库中选择数据。我只想使用参数化查询。如何在参数化查询的数据访问类中创建方法?

方法是:

public DataTable executeSelectQuery(String _query, SqlParameter[] sqlParameter) 
      { 
       SqlCommand myCommand = new SqlCommand(); 
       DataTable dataTable = new DataTable(); 
       dataTable = null; 
       DataSet ds = new DataSet(); 
       try 
       { 
        myCommand.Connection = openConnection(); 
        myCommand.CommandText = _query; 
        myCommand.Parameters.AddRange(sqlParameter); 
        myCommand.ExecuteNonQuery(); 
        myAdapter.SelectCommand = myCommand; 
        myAdapter.Fill(ds); 
        dataTable = ds.Tables[0]; 
       } 
       catch (SqlException e) 
       { 
        return null; 
       } 
       finally 
       { 
        myCommand.Connection = CloseConnection(); 
       } 
       return dataTable; 
      } 

,但我不明白如何使用这种方法来获取数据,以及如何传递参数?

我的查询可能是"select password from tblUsers where [email protected]"如何在业务层传递@email?

如何使数据访问类中的方法获得标量值?

public string getpasswrd(string unm) 
    { 
     con.Open(); 
     string cpaswrd; 

     cmd1 = new SqlCommand("select password from tbl_login where username='" + unm + "'", con); 
     cpaswrd = (String)cmd1.ExecuteScalar(); 
     con.Close(); 
     return cpaswrd; 

    } 

回答

1

你只需要在SQL参数使用相同的名字: new SqlParameter("email", "[email protected]")

3
SqlParameter param; 

    cmd1 = new SqlCommand("select password from tbl_login where [email protected], con); 

    param = new SqlParameter("@username", SqlDbType.VarChar); 
    param.Direction = ParameterDirection.Input; 
    param.Value = unm; 
    cmd1.Parameters.Add(param); 

    cpaswrd = cmd1.ExecuteScalar().ToString();