求助SqlDataReader 相关出现的问题
本帖最后由 cuiweiqiang 于 2013-04-01 16:01:36 编辑 源代码如下:
SqlConnection connection = new SqlConnection();
SqlConnection connectionDetail = new SqlConnection();
connection.ConnectionString = connectionString;
connection.Open();
connectionDetail.ConnectionString = connectionString;
connectionDetail.Open();
SqlCommand command = connection.CreateCommand();
SqlCommand commandDetail = connectionDetail.CreateCommand();
command.CommandText = "SELECT ID, NAME, NUMBER, DEPARTMENT, AREA FROM W_TELEPHONE WHERE (DEPARTMENT LIKE \'%" + key + "%\')";
commandDetail.CommandText = "SELECT TOP 10 ID, NAME, NUMBER, DEPARTMENT, AREA FROM W_TELEPHONE WHERE (NAME LIKE \'%" + key + "%\')";
SqlDataReader data = command.ExecuteReader();
SqlDataReader dataDetail = commandDetail.ExecuteReader();
List<Phone> phones = new List<Phone>();
if (data.Read())
{
while (data.Read())
{
Phone phonetemp = new Phone();
phonetemp.name = (string)data[1];
phonetemp.number = (string)data[2];
phonetemp.department = (string)data[3];
phonetemp.area = (string)data[4];
phones.Add(phonetemp);
}
}
else if (dataDetail.Read())
{
while (dataDetail.Read())
{
Phone phonetemp = new Phone();
phonetemp.name = (string)data[1];
phonetemp.number = (string)data[2];
phonetemp.department = (string)data[3];
phonetemp.area = (string)data[4];
phones.Add(phonetemp);
}
}
else
{
phones = null;
}
connection.Close();
connectionDetail.Close();
return phones;
这个其实想实现的功能就是,如果在DEPARTMENT列匹配不到关键字就去NAME列匹配。
现在的问题是如果在DEPARTMENT列能找到关键字,phones就不是空的。但是在DEPARTMENT找不到关键字的时候,phones确是空的,跟踪调试了一下,能进入else if (dataDetail.Read()),但是在while(dataDetail.Read())这一句就跳走了。而在NAME列其实是能找到相关的数据的。
求大神帮助一下! SqlDataReader?
[解决办法]
else if (dataDetail.Read()) //读第一条记录
{
while (dataDetail.Read()) //从第二条记录开始读
...
所以假如dataDetail只有一条记录的话,在while(dataDetail.Read())肯定是跳走的