是否有任何适当的方法可通过某些特定的字符串值从OLEDB连接中检索数据?

我想使用此查询从SQL Server检索类别。我的数据库中有数据,此查询在SQL Server中运行良好。但是,当我将其与oledb命令一起使用时,它不会从服务器返回任何数据。有什么问题吗?

public Category getcategoryByCategoryName(string categoryName)
{
    Category _category = null;

    using (OleDbConnection con = new OleDbConnection(_connectionString))
    {
        string sql = "select * from Categories where CategoryName=?";

        OleDbCommand cmd = new OleDbCommand(sql,con);
        cmd.Parameters.AddWithValue("@cName",categoryName);

        try
        {
            con.Open();
            OleDbdataReader rdr = cmd.ExecuteReader();

            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    _category.Id = Convert.ToInt32(rdr["Id"]);
                    _category.CategoryName = rdr["CategoryName"].ToString();
                }

                rdr.Close();
            }
        }
        catch (Exception ex)
        {
            _category = null;
        }
    }

    return _category;
}
shuishuiwoai 回答:是否有任何适当的方法可通过某些特定的字符串值从OLEDB连接中检索数据?

我不知道“适当”,但“好”方法可能是安装Dapper并将代码减少为:

    public Category GetCategoryByCategoryName(string categoryName)
    {
        using (OleDbConnection con = new OleDbConnection(_connectionString))
        {
            return con.QueryFirstOrDefault<Category>(
              "select * from Categories where CategoryName=?cn?",new { cn = categoryName }
            );
        }
    }

参考: Passing query parameters in Dapper using OleDb

,

它应该: Category _category = new Category(); 代替: Category _category = null;

本文链接:https://www.f2er.com/3070688.html

大家都在问