我尝试使用restapi从mssql数据库中获取一个用户的信息
当我叫这个的时候
https://localhost:44320/api/雇员数据库
它把所有的信息都加载到这个代码后面
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(例如)的结果,还不如返回数据库中的所有内容,在这种情况下,我想做一些认真的过滤,并就我必须做的事情提出建议。
2条答案
按热度按时间vojdkbi01#
您必须在查询的fullname属性周围加上单引号(就像您通过sql查询它一样):
我还建议您通过参数添加如下动态属性:https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldataadapter.selectcommand?view=dotnet-plat-ext-3.1
wmtdaxz32#
谢谢你们,其实是我的错,我错过了一些东西
万一某一天有人需要它,这就是我的代码最终的样子,我不得不重命名以获得它,并且在全名周围使用了引号,所有的东西都得到了肯定的响应。