我有一个方法从我的数据库中检索多个结果,我想将这些结果作为一个对象返回到我的页面,但是目前它只是返回sql命令的最后一个结果.
我的页面上的代码调用方法:
Personen persoon1 = Personen.GetOneItem(int.Parse(TextBox_id.Text));
Run Code Online (Sandbox Code Playgroud)
方法代码:
public static Personen GetAllPersonWithID(int id)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["RestaurantConnection"].Connection
String;
SqlCommand cmd = new SqlCommand("SELECT * FROM Personen where reservering_id=" + id, con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
Personen Item = new Personen();
while (rdr.Read())
{
Item.id = Convert.ToInt32(rdr["id"]);
Item.menu_id = Convert.ToInt32(rdr["menu_id"]);
Item.reservering_id = Convert.ToInt32(rdr["reservering_id"]);
}
con.Close();
return Item;
}
Run Code Online (Sandbox Code Playgroud)
它只返回对象中的最后一个结果.
提前致谢
基本上,您应该返回一个List<Personen>或类似的集合类型.(考虑将返回类型声明为IList<Personen>或IEnumerable<Personen>使用List<Personen>作为实现类型.)
请注意,目前您反复覆盖单个对象的属性- 您也需要修复它.
例如:
...
List<Personen> list = new List<Personen>();
while (rdr.Read())
{
Personen item = new Personen();
item.id = Convert.ToInt32(rdr["id"]);
item.menu_id = Convert.ToInt32(rdr["menu_id"]);
item.reservering_id = Convert.ToInt32(rdr["reservering_id"]);
list.Add(item);
}
...
return list;
Run Code Online (Sandbox Code Playgroud)
另外:
using语句来关闭连接,命令和阅读器MenuID而不是menu_idint或使用rdr.GetInt32()而不是调用Convert.ToInt32.Personen已经是复数名词,请将其更改为Person代表单个人| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |