我已经编写了一个Web服务来访问我的SQL数据库。
[WebMethod]
public void getRoomByBuildingID(int buildingID)
{
string cs = ConfigurationManager.ConnectionStrings["vetDatabase_Wizard"].ConnectionString;
List<Room> rooms = new List<Room>();
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spGetRoomsByBuildingID", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter()
{
ParameterName = "@buildingID",
Value = buildingID
};
cmd.Parameters.Add(param);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Room room = new Room();
room.ID = Convert.ToInt32(rdr["ID"]);
room.Name = rdr["Room"].ToString();
room.buildingID = Convert.ToInt32(rdr["Building"]);
rooms.Add(room);
}
}
JavaScriptSerializer js = new JavaScriptSerializer();
//Serialize list object into a JSON array and write in into the response stream
Context.Response.Write(js.Serialize(rooms));
}
我在
处不断收到indexOutOfRangeExceptionroom.building = Convert.ToInt32(rdr["Building"]);
我一直在看我的sql表,列名和类型是正确的(即ID,Room,Building)。在这一点上我完全无能为力,非常感谢社区的反馈。谢谢!
编辑:
ALTER PROCEDURE spGetRoomsByBuildingID
@buildingID int
AS
BEGIN
SELECT ID, Room, Building FROM tblRooms
WHERE Building = @buildingID
END
EXEC spGetRoomsByBuildingID