C# 有没有合适的方法从OLEDB连接中检索由特定字符串值搜索的数据?
我想使用此查询从SQL Server检索一个类别。我在数据库中有数据,该查询在SQL Server中运行良好。但当我将它与oledb命令一起使用时,它不会从服务器返回任何数据。有什么问题吗C# 有没有合适的方法从OLEDB连接中检索由特定字符串值搜索的数据?,c#,sql-server,oledb,C#,Sql Server,Oledb,我想使用此查询从SQL Server检索一个类别。我在数据库中有数据,该查询在SQL Server中运行良好。但当我将它与oledb命令一起使用时,它不会从服务器返回任何数据。有什么问题吗 public Category GetCategoryByCategoryName(string categoryName) { Category _category = null; using (OleDbConnection con = new OleDbConnection(_conn
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;
}
我不知道“正确”的含义,但一个“好”的方法可能是安装代码并将其简化为:
public Category GetCategoryByCategoryName(string categoryName)
{
using (OleDbConnection con = new OleDbConnection(_connectionString))
{
return con.QueryFirstOrDefault<Category>(
"select * from Categories where CategoryName=?cn?",
new { cn = categoryName }
);
}
}
公共类别GetCategoryByCategoryName(字符串categoryName)
{
使用(OleDbConnection con=新OleDbConnection(_connectionString))
{
return con.QueryFirstOrDefault(
“从CategoryName=?cn的类别中选择*”,
新的{cn=categoryName}
);
}
}
参考资料:
我不知道“正确”是什么,但一个“好”的方法可能是安装并将代码缩减为:
public Category GetCategoryByCategoryName(string categoryName)
{
using (OleDbConnection con = new OleDbConnection(_connectionString))
{
return con.QueryFirstOrDefault<Category>(
"select * from Categories where CategoryName=?cn?",
new { cn = categoryName }
);
}
}
公共类别GetCategoryByCategoryName(字符串categoryName)
{
使用(OleDbConnection con=新OleDbConnection(_connectionString))
{
return con.QueryFirstOrDefault(
“从CategoryName=?cn的类别中选择*”,
新的{cn=categoryName}
);
}
}
参考资料:
它应该:
Category\u Category=new Category()代码>
而不是:
Category\u Category=null代码>它应该:
Category\u Category=new Category()代码>
而不是:
Category\u Category=null
显示有效的sql server查询、连接字符串和categoryName
的值转储,从categoryName='Amonium'
所在的类别中选择*,它将从表中提取数据。如果是sql server,为什么在存在SqlCommand时使用OleDbCommand?这是连接字符串。这表明CategoryName不是有效字段。如果按照我的建议调用Read而不使用HasRows,是否会出现异常?显示有效的sql server查询、连接字符串和categoryName
的值转储,从categoryName='Amonium'
中选择*并从表中提取数据。如果是sql server,存在SqlCommand时为什么使用OleDbCommand?这是连接字符串。这表明CategoryName不是有效字段。如果按照我的建议调用Read而不使用HasRows,是否会出现异常?