我正在制作一个学校项目所需的webapi服务器,因为我们必须在不同的平台上制作几个应用程序,通过消息进行通信,webapi服务器有get、post和delete方法。
现在我有一个get方法,它将使用id返回表中的一行(例如http://localhost:1442/api/users/1将返回id为1的用户)
代码如下所示:
public User Get(int id)
{
SqlDataReader reader = null;
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\Downloads\SERVER\SERVER\App_Data\dbCoffeeBreak_.mdf;Integrated Security=True";
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Select * from tbUsers where ID=" + id + "";
sqlCmd.Connection = myConnection;
myConnection.Open();
reader = sqlCmd.ExecuteReader();
User u = null;
while (reader.Read())
{
u = new User();
u.ID = Convert.ToInt32(reader.GetValue(0));
u.Login = reader.GetValue(1).ToString();
u.Password = reader.GetValue(2).ToString();
u.Avatar = reader.GetValue(3).ToString();
u.Email = reader.GetValue(4).ToString();
u.Online = Convert.ToBoolean(reader.GetValue(5));
}
myConnection.Close();
return u;
}
但我不知道如何使它,以便通过键入例如只http://localhost:1442/api/users服务器将返回表中的所有列。我试着设置 sqlCmd.CommandText =
为了公正 Select * from tbUsers
但它只返回表中的最后一个用户,而不是所有用户。
1条答案
按热度按时间ldfqzlk81#
这是因为您只返回来自的最后一个用户
Reader.Read
有几个问题和建议给你1制造
Id
作为可选参数t pass any
身份证件, it will query for all
用户。有了它,您就不需要创建单独的方法来获取所有用户。 2返回
List而不是返回单
User` ```public List Get(int? id = null)
{
SqlDataReader reader = null;
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\Downloads\SERVER\SERVER\App_Data\dbCoffeeBreak_.mdf;Integrated Security=True";
sqlCmd.CommandText = "Select * from tbUsers where ID=@Id";
sqlCmd.Parameters.AddWithValue("@Id", id);