c# - REST Web 服务不会返回仅输入一个人的数据
问题描述
我正在尝试使用 REST api 从 mssql 数据库中获取有关说用户的单个信息
当我打电话给这个
https://localhost:44320/api/EmployeeDB
它使用此代码加载所有信息
public IEnumerable<EmployeeDB> Get()
{
SqlConnection con = new SqlConnection(connectionstring);
DataTable dt = new DataTable();
con.Open();
string query = "select* from [EmployeeDB].[dbo].[EmployeeTable]";
SqlDataAdapter adapter = new SqlDataAdapter(query, con);
adapter.Fill(dt);
List<EmployeeDB> empdb = new List<Models.EmployeeDB>(dt.Rows.Count);
if (dt.Rows.Count > 0)
{
foreach (DataRow empdbrecord in dt.Rows)
{
empdb.Add(new ReadEmployee(empdbrecord));
}
}
return empdb;
}
这完美地工作。
现在我想用这个代码库为单个用户使用相同的假脱机信息
public IEnumerable<EmployeeDB> FetchStaffInfoByName(string Fullname)
{
SqlConnection con = new SqlConnection(connectionstring);
DataTable dt = new DataTable();
con.Open();
string query = "select * from [EmployeeDB].[dbo].[EmployeeTable] where Fullname =" + Fullname;
SqlDataAdapter adapter = new SqlDataAdapter(query, con);
adapter.Fill(dt);
List<EmployeeDB> empdb = new List<Models.EmployeeDB>(dt.Rows.Count);
if (dt.Rows.Count > 0)
{
foreach (DataRow empdbrecord in dt.Rows)
{
empdb.Add(new ReadEmployee(empdbrecord));
}
}
return empdb;
}
并像这样在 Postman 中运行它
https://localhost:44320/api/EmployeeDB?fullname=James Hall
这失败了。我不想只返回 James Hall(例如)的结果,而是返回数据库中的所有内容,我想在这种情况下进行一些认真的过滤,请就我必须做的事情提出建议。
解决方案
您必须在查询中的全名属性周围放置单引号(就像您通过 sql 查询它一样):
"select * from [EmployeeDB].[dbo].[EmployeeTable] where Fullname = '" + Fullname + "'"";
我还建议检查通过参数添加这样的动态属性: https ://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldataadapter.selectcommand?view=dotnet-plat-ext -3.1
推荐阅读
- python - aws iam 上令人困惑的错误:“策略中的语法错误”
- python - Pandas-DataError:没有要聚合的数字类型
- javascript - 找不到带有 React-Responsive-Modal 的 react-transition-group/CSSTransition。我需要安装其他东西吗?
- sql - 如何计算一个值在 Where 之后的列数?
- javascript - 如何设置 v-for 索引从某个数字开始?
- html - 更改容器外 div 的位置以悬停在容器中的 div 下方
- javascript - react native:函数作为 react child 无效。如果您返回组件而不是
- php - 从具有特定内容(特殊字符)的数组中删除元素
- php - Twig 将模板的一部分委托给 symfony 3 服务
- html - 如何将我的按钮与 django 中的两个 URL 连接起来?