传说别人使用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(); } }