学习笔记第九周
Posted 我是墩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记第九周相关的知识,希望对你有一定的参考价值。
6.1数据集_数据关系
创建树形视图(TreeView->Node节点)
SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT * FROM tb_Department;" + "SELECT * FROM tb_Major;" + "SELECT * FROM tb_Class;";
依旧是先声明并实例化SQL命令,将连接属性指向SQL连接。然后指定SQL命令的命令文本,先插入表——学院表、专业表、班级表。
DataSet dataSet =new DataSet(); sqlConnection.Open(); sqlDataAdapter.Fill(dataSet); sqlConnection.Close();
然后声明并实例化数据集,接着填充数据集。
DataTabledepartmentTable=dataSet.Tables[0]; DataTable majorTable = dataSet.Tables[1]; DataTable classTable = dataSet.Tables[2];
声明数据表并且对应着数据集中的相应的数据表。
DataRelation[] dataRelations = { new DataRelation ("Department_Major" , departmentTable.Columns["No"] , majorTable.Columns["DepartmentNo"] , false) , new DataRelation ("Major_Class" , majorTable.Columns["No"] , classTable.Columns["MajorNo"] ,false) };
用数组的方式来设置表与表之间的关联。取一个与表之间关系相关的名字。然后列出表相关联的两个列。最后一行的false表示不要要创建外键约束。本例题中写出了学院与专业之间的关系,专业与班级之间的关系。
dataSet.Relations.AddRange(dataRelations);
将数据关系批量添加到数据集中。
声明并实例化树形节点。
List<TreeNode> treeNodes = new List<TreeNode>();
这是添加第一层节点,遍历学院表中的每一行。然后声明新节点,添加。
foreach (DataRow departmentRow in departmentTable.Rows) { TreeNode departmentNode = new TreeNode(); departmentNode.Text = departmentRow["Name"].ToString(); treeNodes.Add(departmentNode);
然后先获取“下属”行即学院表所在行的子行。
foreach (DataRow majorRow in departmentRow.GetChildRows("Department_Major")) { TreeNode majorNode = new TreeNode(); majorNode.Text = majorRow["Name"].ToString(); departmentNode.Nodes.Add(majorNode);
现在添加班级这一节点。其中有一个特殊的属性Tag(标签),写入编号,有利于之后的信息载入。信息插入时要对应相应的节点。
foreach (DataRow classRow in majorRow.GetChildRows("Major_Class")) { TreeNode classNode = new TreeNode(); classNode.Text = classRow["Name"].ToString(); classNode.Tag = classRow["No"]; majorNode.Nodes.Add(classNode); } } }
作为进一步的改进,我们可以使用Ado.net,它是面向对象的、用可视化的方法实现连接、LINQ(语言集成查询)。
首先我们要声明:
using System Security.cryptography;
然后我们以登录为例:
EduBase edubase =new EduBase();
用哈希函数将密码加密:
MD5 CryptoServiceProvider md5 =new Byte[] passwordBytes=Encoding.Default.GetBytes(txb_password.text.Trim()); Byte[] passwordHashed=md5.ComputeHash(passwordBytes);
然后从数据库中取数据:
Var user=(from u in eduBase.User Where u.No==this.txb_UserNo.Trim()&&u.password Hashed Select u).FirstOrDefault();
FirstOrDefault()为取第一条记录没有则为默认值。
最后判断是否有数据,登录是否成功:
if (rowCount == 1) { MessageBox.Show("登录成功。"); } else { MessageBox.Show("用户号/密码有误,请重新输入!"); // this.txb_Password.Focus(); this.txb_Password.SelectAll(); }
以上是关于学习笔记第九周的主要内容,如果未能解决你的问题,请参考以下文章