public void GetStudentList()
{
SqlConnection conn = new SqlConnection(connString);
SqlDataReader reader = null;
try
{
conn.Open();
string sql = “select StudentNo,StudentName from student”;
SqlCommand command = new SqlCommand(sql, conn);
reader = command.ExecuteReader();
Console.WriteLine("---------------------------");
Console.WriteLine(" 学号\t 姓名");
Console.WriteLine("---------------------------");
StringBuilder sb = new StringBuilder();
//循环读取DataReader
while (reader.Read())
{
sb.AppendFormat("{0}\t{1}", reader["StudentNo"], reader["StudentName"]);
Console.WriteLine(sb);
sb.Length = 0;
}
Console.WriteLine("---------------------------");
}
catch (Exception)
{
Console.WriteLine("数据库操作失败!");
}
finally
{
reader.Close();
conn.Close();
}
}
2 改进以上方法 返回SqlDataReader 然后再SchoolManger类中调用db得到reader,具体实现如下
A 修改后
//获取学生信息
public SqlDataReader GetStudentList()
{
SqlConnection conn = new SqlConnection(connString);
//SqlDataReader reader = null;
try
{
conn.Open();
string sql = “select StudentNo,StudentName from student”;
SqlCommand command = new SqlCommand(sql, conn);
//reader = command.ExecuteReader();
return command.ExecuteReader();
}
catch (Exception)
{
return null;
//Console.WriteLine("数据库操作失败!");
}
//finally
//{
// reader.Close();
// conn.Close();
//}
}
B SchoolManager类中的自定义方法及调用db
//查看学生名单
public void ShowStudentList()
{
SqlDataReader reader= db.GetStudentList();
if (reader == null)
{
Console.WriteLine(“出现异常!”);
return;
}
Console.WriteLine("---------------------------");
Console.WriteLine(" 学号\t 姓名");
Console.WriteLine("---------------------------");
StringBuilder sb = new StringBuilder();
//循环读取DataReader
while (reader.Read())
{
sb.AppendFormat("{0}\t{1}", reader["StudentNo"], reader["StudentName"]);
Console.WriteLine(sb);
sb.Length = 0;
}
Console.WriteLine("---------------------------");
reader.Close();
}