小视图有大秘密

简介:         视图,是什么nie,在我们小学的时候,就接触过视图的概念,那时候天总是那么蓝,云总是那么潇洒,给定一个立体图形,让小伙伴画出这个图形的三视图,即---主视图,俯视图,左视图,时过境迁,她再一次出现在我面前,这一次,她以另一种身份和我相约在.
        视图,是什么nie,在我们小学的时候,就接触过视图的概念,那时候天总是那么蓝,云总是那么潇洒,给定一个立体图形,让小伙伴画出这个图形的三视图,即---主视图,俯视图,左视图,时过境迁,她再一次出现在我面前,这一次,她以另一种身份和我相约在.Net版机房收费系统,现在让我们来看看她的又一神秘面纱的背后,蕴藏着什么样的知识呢?
        视图,百度百科对她这样进行阐述,在SQL中,视图是虚表,是从一个或几个基本表或者是视图中导出来的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据,视图是原始数据库数据的一种变化,是查看表中数据的另外一种方式,可以将视图看成是一个移动的窗口,通过她可以看到我们想要的数据,视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中,那些用于产生视图的表叫做该视图的基表,接下来,以机房收费系统中查看余额为例,看看视图在我们的实际应用中是如何在她的舞台动情演绎。
      首先,我们来看一下,学生查看余额中的逻辑:

      第一:判断卡号是否存在;

      第二:从学生表和卡表中读取相应信息;

      接着,看看如何创建视图,如下图所示:

      a、右击新建视图;

      

     b、选择涉及到的表或视图,学生查看余额中涉及到卡表和学生表;

     

    c、选择我们需要的字段,在这里,你也可以把字段都写上,后续的功能中如果有类型的从卡表和学生表中读取信息的,直接调用该视图即可。

    

   d、保存即可,视图的命名规范为 视图名 = V + “_” + 名称。

   

   那我们的D层的代码改如何写,和以前直接查表的方法有什么不一样呢?代码展示如下:

   

<span style="font-size:18px;">'**********************************************
'文 件 名: V_StuCardViewDAL
'命名空间: DAL
'内    容: 学生查看余额,从卡表和学生表读取相关信息
'功    能: 学生查看余额
'文件关系:
'作    者:丁国华
'小    组:宝贝计划
'生成日期: 2014/7/24 11:30:16
'版本号:V2.0
'修改日志:
'版权说明:
'**********************************************
Imports System.Data.SqlClient
Public Class V_StuCardViewDAL : Implements IDAL.IStuCardView
    ''' <summary>
    ''' 学生查看余额,从学生表和卡表里读取相关信息
    ''' </summary>
    ''' <param name="cardNo"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function ReadStuCardinfo(cardNo As String) As List(Of Entity.StuCardViewEntity) Implements IDAL.IStuCardView.ReadStuCardinfo
        Dim strText As String = "select * from V_StuCardView where cardNo=@cardNo" '从视图V_StuCardView这张虚拟的表中读取相关信息
        Dim cmdType As CommandType = CommandType.Text '命令类型
        Dim parameter As SqlParameter() '传参

        parameter = {New SqlParameter("@cardNo", cardNo)}
        Dim sqlHelper As New SqlHelper

        Dim dt As New DataTable
        Dim myList As List(Of Entity.StuCardViewEntity)

        dt = sqlHelper.ExecuteReaderTable(strText, cmdType, parameter)
        myList = EntityHelper.convertToList(Of Entity.StuCardViewEntity)(dt)

        Return myList
    End Function
End Class
</span>
       一如我们所看到的,使用视图,视图具有简单的特点,就学生查看余额来说,没有使用视图之前,我们需要从卡表和学生表里分别查询相应信息,使用视图之后,直接查询视图即可,视图,简化了我们对数据的理解,也可以简化其操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。使用视图,还有一个好处就是安全,通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。

       第二版机房收费系统,未完,待续......

   
目录
相关文章
|
4月前
|
XML C# 数据格式
绝密档案曝光!Windows平台如何深挖一个dll背后的神秘依赖,揭露隐藏的秘密!
【8月更文挑战第14天】在Windows系统中,动态链接库(DLL)对程序运行至关重要。了解DLL的依赖关系有助于软件的调试与优化。本文以具体案例演示如何查看DLL依赖。首先确保环境已安装Windows及具备基本开发知识。
75 0
|
7月前
|
存储 SQL JSON
晓得不,中间表是这样被消灭的
晓得不,中间表是这样被消灭的
|
架构师 数据挖掘
网站数据池里原来藏着这些后台数据逻辑
网站数据池里原来藏着这些后台数据逻辑
122 1
网站数据池里原来藏着这些后台数据逻辑
|
架构师 Java Spring
追逐影子的人,最终只会是影子
追逐影子的人,最终只会是影子
143 0
追逐影子的人,最终只会是影子
|
新零售 数据可视化 大数据
教你五招“必杀技”,你也能当数据“昏析师”
掌握数据分析技能已变成任何岗位“标配”, 今天,网聚宝数据分析师给大家“安利”几种基本的用户数据分析法和场景,帮你轻松提升运营业绩,不再“盲人摸象”! 技能一: 新老客占比分析——你的流量还好吗? 横轴(时间维度):付款日期 2015.12-2017.2期间 纵轴(会员量):会员数  对比维度: 1. 红色趋势线代表老客户,即入店购买2次以上的客户 2. 蓝色趋势线代表新客户,即入店购买1次的客户 分析这些数据我们发现 2015.12-2016.1老客户数量在增长,新客数量下降。
6385 0
|
Android开发 Windows iOS开发
第二十五章:页面变化(六)
使用ItemTemplateTabbedPage还可用于呈现小数据集,每个数据集是由选项卡标识的单独页面。 您可以通过设置TabbedPage的ItemsSource属性并指定用于呈现每个页面的ItemTemplate来完成此操作。
560 0
|
JavaScript Android开发 iOS开发
第二十五章:页面变化(五)
TabbedPage TabbedPage派生自抽象类MultiPage 。它维护一个Page类型的子集合,其中只有一个一次完全可见。 TabbedPage通过页面顶部或底部的一系列选项卡标识每个子项。
498 0
|
JavaScript Android开发 iOS开发
第二十五章:页面变化(四)
您自己的用户界面如果您想提供自己的用户界面以在主视图和详细视图之间切换,您可能还希望禁用MasterDetailPage自动提供的界面。您可以通过两种方式执行此操作: 将IsGestureEnabled属性设置为false以禁用iOS和Android上的滑动手势支持。
588 0
|
Android开发 Windows iOS开发
第二十五章:页面变化(三)
回到学校到目前为止,在本书中你已经看到了一些使用ListView来展示美术学院学生的程序。这些程序都有不同的方法来显示其中一个学生的详细外观。第19章“集合视图”中的SelectedStudentDetail程序在屏幕的上半部分显示了ListView,在下半部分显示了详细信息。
636 0
|
Android开发
第二十五章:页面变化(一)
如果您将Xamarin.Forms应用程序视为建筑物,那么您可以使用视图和元素形式的砖块构建此建筑物。 您可以使用布局类将它们排列到墙中,然后使用ContentPage将它们组织到房间中,通过围绕NavigationPage构建的导航功能,可以实现从一个房间到另一个房间的通道。
491 0