【问题标题】:How to make method in data access class for parameterized query?如何在数据访问类中为参数化查询创建方法?
【发布时间】:2016-08-19 03:26:17
【问题描述】:

我在数据访问类中创建了一种方法来使用参数从数据库中选择数据。我只想使用参数化查询。

方法是:

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=@email" 如何在业务层传递@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;

    }

【问题讨论】:

    标签: c# sql asp.net asp-classic ado.net


    【解决方案1】:
        SqlParameter param;
    
        cmd1 = new SqlCommand("select password from tbl_login where username=@username, con);
    
        param = new SqlParameter("@username", SqlDbType.VarChar);
        param.Direction = ParameterDirection.Input;
        param.Value = unm;
        cmd1.Parameters.Add(param);
    
        cpaswrd = cmd1.ExecuteScalar().ToString();
    

    【讨论】:

      【解决方案2】:

      你只需要在 sql 参数中使用相同的名称: new SqlParameter("email", "myemail@gmail.com")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-13
        • 2011-04-29
        • 1970-01-01
        相关资源
        最近更新 更多