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

问题描述 投票:0回答:2

我想使用此查询从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;
}
c# sql-server oledb
2个回答
1
投票

我不知道“正确”,但是“好”方式可能是安装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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.