我想使用此查询从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;
}
我不知道“正确”,但是“好”方式可能是安装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 }
);
}
}