学习笔记第九周

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();                                              

            }
时间: 2024-08-20 13:16:30

学习笔记第九周的相关文章

学习笔记 第九周 第一篇

1. 电力电子器件 电力电子器件根据其导通和关断可控性的不同可以分为以下三类. 1. 不可控型器件,即导通与关断都不能控制的器件.仅整流二极管是不可控器件. 2. 半控型器件,即只能控制其导通,不能控制其关断的器件.普通晶闸管SCR及其派生器件属于半控型器件. 3. 全控型器件,即导通与关断都可以控制的器件.GTR.GTO.IGBT等都属于全控型器件. 2. 电力变换电路 由电力电子器件与相应控制电路组成的电力变化电路,按其功能可分为下列几种类型. 1. 可控整流电路 2. 交流调压电路 3.

《Python基础教程(第二版)》学习笔记 -&gt; 第九章 魔法方法、属性和迭代器

准备工作 >>> class NewStyle(object): more_code_here >>> class OldStyle: more_code_here 在这两个类中,NewStyle是新式的类,OldStyle是旧式的类,如果文件以__metaclass__ = type 开始,那么两个类都是新式类. 构造方法 构造方法,当一个对象被创建后,会立即调用构造方法.Python中创建一个构造方法,只要把init方法的名字从简单的init修改成__init__

[ExtJS学习笔记]第九节 Extjs5的mvc与mvvm框架结构简介

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38537431 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源:http://docs.sencha.com/ext

每周更新学习进度表--第九周

每周更新学习进度表:   学习时间 新增代码行 博客量(篇) 知识总结 第一周  7h  80  2  对于软件工程这门课有个大致的了解,并在学习代码上步入正轨. 第二周  8h  100  4  四则运算:还有很多不足的地方,需要继续改进. 第三周  12h  100  5 课上对C语言各种语句重新复习了下,把不少渐渐生疏的语句又过了一遍,并尝试着编写简单语句i 后来看别人的四则运算发现需要回忆的太多,回宿舍把大一的C语言教材翻出来了—_—# 第四周  8h  200  6  重新安装了VS,

机器学习公开课笔记第九周之大数据梯度下降算法

一,随机梯度下降法(Stochastic Gradient Descent) 当训练集很大且使用普通梯度下降法(Batch Gradient Descent)时,因为每一次\(\theta\)的更新,计算微分项时把训练集的所有数据都迭代一遍,所以速度会很慢 批量梯度下降法是一次性向计算m组数据的微分,一次更新\(\theta\),计算m组数据的微分时,用的是同一个\(\theta\),会获得全局最小值 随机梯度下降法依次计算乱序的m组数据的微分,m次更新\(\theta\),计算m组数据的微分时

学习笔记第一周

机电传动控制技术从广义上来说,就是要使生产机械设备,生产线,车间,甚至整个工厂都实现自动化.而现在的制造自动化面临的问题还很多.包括全球化,数字化和信息化,越来越短的产品生命周期,复杂的关联技术,以及有限的资源等五大问题.机电传动技术早就不单单着眼于传动二字.从电气系统,到机械系统,它们之间的转化,只是现代机电控制系统的基本要素.作为一个工程师,更要站在产业自动化的高度,去完善系统. 现代的工程师,第一,需要更高的价值竞争意识,不管是环境成本,人力成本,能源成本,时间成本,还是原材料的成本都应该

Java学习笔记—第九章 字符串String

第九章 字符串String Java中使用String类来创建一个字符串变量,字符串变量是类类型变量,是一个对象.声明字符串的语法格式如下:String s; 创建字符串:通过String类提供的构造方法可创建字符串,有以下几种方式: (1)创建字符串对象时直接赋值,例如: String s1 = "hello"; String s2 = new String("hello"); (2)由一个字符串创建另一个字符串,例如: String s1 = "hel

Android学习笔记—第九章 Activity的加载模式

第九章 Activity的加载模式 task:类似于栈,每次打开界面会创建一个task,然后将这开启的界面放入到该task中. (1)standard:默认模式 每次都会创建一个新的界面,将该界面加入task中 (2)singleTop:栈顶单实例模式 a. 如果目标Activity不存在,创建一个新的Activity,存入到task中 b. 如果目标Activity已经存在,并且处于栈顶,不会再创建新的Activity c. 如果目标Activity已经存在,但不处于栈顶,创建一个新的Acti

javascript学习笔记第一周Array

Javascript第一周 Array数组 创建数组 自定义方式和实例化方式 使用数组 1. join() join方法是将数组中的元素连接成字符串.参数可选.参数即是连接符.为空时,参数为逗号. 2.reverse() reverse方法是将数组里的元素的顺序全部颠倒,逆序排列. 3.sort() sort方法,是将数组中的元素排序.默认无参时按ascii增序排列.可以一个参数.该参数是一个比较函数,比较函数有两个参数. 4.concat() 将数组和参数合并成一个新数组并返回.参数可以是单个