我正在尝试使用网络服务获取我所有的表记录。我试过这个:
public class Student
{
public int id;
public string name;
public string grade;
}
[WebMethod]
public Student[] getall()
{
Student objStd = new Student();
Student[] stds = new Student[400];
SqlConnection conn;
conn = Class1.ConnectionManager.GetConnection();
conn.Open();
SqlCommand newCmd = conn.CreateCommand();
newCmd.CommandType = CommandType.Text;
newCmd.CommandText = "select * from dbo.tblUser";
SqlDataReader sdr = newCmd.ExecuteReader();
for (int runs = 0; sdr.Read(); runs++)
{
objStd.id = Int32.Parse(sdr["Id"].ToString());
objStd.name = sdr["name"].ToString();
objStd.grade = sdr["grade"].ToString();
stds[runs] = objStd;
}
conn.Close();
sdr.Close();
return stds;
}
但是这样的结果是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfStudent xmlns="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Student>
<id>8</id>
<name>hhhhh</name>
<grade>76</grade>
</Student>
-<Student>
<id>8</id>
<name>hhhhh</name>
<grade>76</grade>
</Student>
-<Student>
<id>8</id>
<name>hhhhh</name>
<grade>76</grade>
</Student>
-<Student>
<id>8</id>
<name>hhhhh</name>
<grade>76</grade>
</Student>
....
这将一次又一次地只返回最后一条记录,为什么?
我应该在我的代码中更正什么?
最佳答案
制作一个 List
添加到其中并返回,现在您只返回最后一个对象。
在 For 循环中创建 Student
对象实例
List<Student> stds = new List<Student>();
for (int runs = 0; sdr.Read(); runs++)
{
Student objStd = new Student();
objStd.id = Int32.Parse(sdr["Id"].ToString());
objStd.name = sdr["name"].ToString();
objStd.grade = sdr["grade"].ToString();
stds.Add(objStd);
}
关于c# - 返回网络服务中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33970532/