/**********************************数据库操作类***************************************/
#region 获取学生名单
/// <summary>
/// 取得学生名单
/// </summary>
public SqlDataReader GetStudentList()
{
SqlConnection conn = new SqlConnection(connStr);
try
{
conn.Open(); StringBuilder sb = new StringBuilder();
sb.AppendLine("select");
sb.AppendLine(" [StudentNo],");
sb.AppendLine("[StudentName] ");
sb.AppendLine("from ");
sb.AppendLine("[Student]"); SqlCommand comm = new SqlCommand(sb.ToString(), conn);
return comm.ExecuteReader();
}
catch (Exception)
{
Console.WriteLine("数据库操作失败!");
return null;
}
}
/***************************************学员管理类*************************************/
/// <summary>
/// 查看学生名单
/// </summary>
public void ShowRosterList()
{
SqlDataReader reader = dbOperate.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("--------------------------------");
//关闭DataReader
reader.Close();
}
如果在catch块后面加一个finally块用来调用Close()方法关闭数据库连接,那以就reader.Read()就读取不到结果了。
刚学,感觉好思维好混乱
#region 获取学生名单
/// <summary>
/// 取得学生名单
/// </summary>
public SqlDataReader GetStudentList()
{
SqlConnection conn = new SqlConnection(connStr);
try
{
conn.Open(); StringBuilder sb = new StringBuilder();
sb.AppendLine("select");
sb.AppendLine(" [StudentNo],");
sb.AppendLine("[StudentName] ");
sb.AppendLine("from ");
sb.AppendLine("[Student]"); SqlCommand comm = new SqlCommand(sb.ToString(), conn);
return comm.ExecuteReader();
}
catch (Exception)
{
Console.WriteLine("数据库操作失败!");
return null;
}
}
/***************************************学员管理类*************************************/
/// <summary>
/// 查看学生名单
/// </summary>
public void ShowRosterList()
{
SqlDataReader reader = dbOperate.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("--------------------------------");
//关闭DataReader
reader.Close();
}
如果在catch块后面加一个finally块用来调用Close()方法关闭数据库连接,那以就reader.Read()就读取不到结果了。
刚学,感觉好思维好混乱
try
{
conn.Open();
...
return comm.ExecuteReader();
}
catch (Exception)
{
Console.WriteLine("数据库操作失败!");
return null;
}
finally
{
comm.Close();
}
}
你可以看一下 微软的数据helper 类 使用using(){} 保证每次用完关闭的
using(SqlConnection conn = new SqlConnection(connStr))
{
//处理逻辑
//推荐使用using
}