RESTWebService不会只返回输入的一个人的数据

bq9c1y66  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(328)

我尝试使用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(例如)的结果,还不如返回数据库中的所有内容,在这种情况下,我想做一些认真的过滤,并就我必须做的事情提出建议。

vojdkbi0

vojdkbi01#

您必须在查询的fullname属性周围加上单引号(就像您通过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

wmtdaxz3

wmtdaxz32#

谢谢你们,其实是我的错,我错过了一些东西
万一某一天有人需要它,这就是我的代码最终的样子,我不得不重命名以获得它,并且在全名周围使用了引号,所有的东西都得到了肯定的响应。

public IEnumerable<EmployeeDB> Get(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;
}

相关问题