我正在使用SqlDataReader
,在尝试读取列时出现以下异常:
System.IndexOutOfRangeException: record
这是代码:
SqlCommand select = new SqlCommand("SELECT RTRIM(LTRIM(PART_NO)) AS PART_NO, record AS CUSTOMER_NO FROM [RMAData].[dbo].[IMPORTING_ORDER_EDI] WHERE sessionID = '" + Session.SessionID + "'", connection);
SqlDataReader reader = select.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
lblWebMasterMessage.Text += "record " + reader["record"].ToString() + "<br />";
...
如果我将
lblWebMasterMessage.Text
更改为以下内容,则可以正常工作...lblWebMasterMessage.Text += "record " + reader["PART_NO"].ToString() + "<br />";
SQL Server表中“record”和“PART_NO”的区别在于,“record”是主键和一个“int”,而“PART_NO”是一个“varchar(100)”。问题是,我需要使用“record”来标识记录以便稍后更新它...我真的看不出为什么它可以返回一个字段而不是另一个字段?
AS
关键词时阅读有关SQL 别名
的文档,因为你需要引用结果集中的字段而不是数据库本身中实际的名称。 - MethodMan