我对c#很陌生,并试图混淆事物的方式。我习惯于在iSeries(RPG)上编码,所以c#对我来说是一个非常不同的概念。从SQL Server存储过程中存储有用的数据
我有一个存储过程,根据匹配行返回一行(或多行)的数据。
想象一下,我的表用户持有下列:
UserId, CompanyId, FirstName, LastName, CompanyAdmin, AccountStatus, UserName.
我有一个存储过程返回所有这些列,其中有一个匹配的公司ID(即... Select * from users where CompanyId = 1
)。
我已经创建了一个类,具有上面匹配的字段以及相应的get/set方法(即。public int UserId {get; set;}
等)。
我已经使用了SqlDataReader
和我试图从我与读者数据类加载每个领域,但我得到一个错误
“读者[‘用户名’]”引发了异常类型的
'System.InvalidOperationException' 对象
{System.InvalidOperationException}
什么我错过了吗?最终,我希望一个对象具有所有定义的字段,这些字段将与我的SQL Server存储过程中的结果集相匹配。
我的代码引发错误看起来是这样的..
public partial class Admin : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet("ot_Users");
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString))
using (SqlCommand command = conn.CreateCommand())
{
command.CommandText = "dbo.ot_User_GetByUserName";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@UserName", Environment.UserName);
conn.Open();
SqlDataReader reader = command.ExecuteReader();
ot_Users user = new ot_Users();
while(reader.Read())
{
user.CompanyId = (int) reader["CompanyId"];
user.UserId = (int) reader["UserId"];
user.FirstName = (String) reader["FirstName"];
user.LastName = (String) reader["LastName"];
user.CompanyAdmin = (bool) reader["CompanyAdmin"];
user.AccountStatus = (int) reader["AccountStatus"];
user.UserName = (String) reader["UserName"];
}
reader.NextResult();
CompanyName.Text = user.FirstName.ToString();
}
}
}
名,姓和用户名。他们(字符)是不是应该是字符串? – AJP
我已经改变了他们,但仍然得到相同的问题 – lomie76
尝试字符串与小写's'。 – AJP