传说别人使用LINQ进行多表查询速度更好用,可惜俺现在就学到ADO.NET,所以只能做这最繁琐的多表查询了:
C# Code:
static void Main(string[] args)
{
////ExcuteDataReader()多表查询,貌似这种方法的输出结果有点错!
//String connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
//using (SqlConnection conn = new SqlConnection(connstr))
//{
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = "select Student.Sno,Sname,Cno,cj from Student,SC where Student.Sno=SC.Sno";
// SqlDataReader reader = cmd.ExecuteReader();
// while (reader.Read())
// {
// Console.WriteLine("学号:{0} \t 名字:{1}\t 课程号:{2}\t 成绩:{3}\t ", reader[0], reader[1], reader[2], reader[3]);
// }
// }
//}
//DataSet多表查询
String connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
//cmd.CommandText = "select Student.Sno,Sname,Cno,cj from Student,SC where Student.Sno=SC.Sno";
}
DataSet ds = new DataSet();
//填充数据
SqlDataAdapter adatapter = new SqlDataAdapter("select * from SC", conn);
adatapter.Fill(ds, "SC");
SqlDataAdapter adatapter1 = new SqlDataAdapter("select * from Student", conn);
adatapter1.Fill(ds, "Student");
//创建两表关联
ds.Relations.Add("SC", ds.Tables["Student"].Columns["Sno"], ds.Tables["SC"].Columns["Sno"]);
//迭代Student表;
foreach (DataRow student in ds.Tables["Student"].Rows)
{
Console.WriteLine("学号:{0}\t 姓名:{1}\t\n", student["Sno"], student["Sname"]);
//遍历选课表
foreach (DataRow sc in ds.Tables["SC"].Rows)
{
Console.WriteLine("课程号:{0}\t 成绩:{1}\t", sc["Cno"], sc["cj"]);
}
}
}
Console.ReadKey();
}
}