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

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

我想使用此查询从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 oledb
1个回答
0
投票

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

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