欢迎光临散文网 会员登陆 & 注册

.net 调用sqlserver视图

2023-06-02 15:22 作者:杨程杰Yc86  | 我要投稿

数据库代码:

--表和数据

create table studentTable(

  id int identity(1,1)primary key,

  name varchar(20),

  gender char(2),

  age int,

)

insert into studentTable (name,gender,age)

values

  ('刘备','男',28),

  ('张飞','男',24),

  ('关羽','男',26); 

   

   

--创建视图 student_view

if (exists (select * from sys.objects where name = 'student_view'))

  drop view student_view

go

--student_view()不使用参数,默认为基础表中的列名称

create view student_view 

as

select name,age from studentTable where age>24;

 

 

 

--创建视图 stu_insert_view

create view stu_insert_view(编号,姓名,性别,年龄)

as

select id,name,gender,age from studentTable;

go

 

  

--查看student_view视图数据 

select * from student_view;

--查看表数据

select * from studentTable;




使用视图修改基本表数据

(1).向视图插入数据,基本表也会同步插入数据。

create view stu_insert_view(编号,姓名,性别,年龄)

as

select id,name,gender,age from studentTable;

go

select * from studentTable;

---插入一条数据

insert into stu_insert_view values('曹操','男',40);

----查看插入记录之后表中的内容。

select * from studentTable;

 

(2).修改视图数据,基本表也会同步修改数据。

--查看修改之前的数据

select * from studentTable;

--修改数据

update student_view set age=30

where name='刘备';

--查看修改后的数据

select * from studentTable;

 

(3).删除视图数据。

--语法

delete view_name where condition;

--例子

delete student_view where name ='张飞';

select * from student_view;

select * from studentTable;


后端代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Configuration;

using System.Data.SqlClient;



namespace ConsoleApp1

{

  class Program

  {

    private static string GetConnectionStringsConfig(string connectionName)

    {

      string connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();

      Console.WriteLine(connectionString);

      return connectionString;

    }


    static void Main(string[] args)

    {

      string source = GetConnectionStringsConfig("Northwind");


      try

      {

        #region 测试3:.net调用视图

        using (SqlConnection cn = new SqlConnection(source))

        {

          cn.Open();

          SqlCommand cmd = new SqlCommand();

          cmd.Connection = cn;

          //调用视图,和表的语法是一样的。

          cmd.CommandText = @"select * from student_view;";


          //4.2.使用视图修改基本表数据

          // (1).向视图插入数据,基本表也会同步插入数据。

          cmd.CommandText = @"insert into stu_insert_view values('曹操','男',40);";

          // (2).修改视图数据,基本表也会同步修改数据。

          cmd.CommandText = @"update student_view set age=30 where name='刘备';";

          // (3).删除视图数据。

          cmd.CommandText = @"delete student_view where name ='张飞';";


          DataTable dt = new DataTable();

          dt.Load(cmd.ExecuteReader());

          Console.WriteLine(dt); 

        }

        #endregion

      }

      catch (SqlException ex)

      {

        Console.WriteLine(ex.Message);

      }

      Console.ReadKey();

    }

  }


视图的优点和作用

与直接从表中读取数据相比,视图具有以下优点:

3.1.简单化

看到的就是需要的,视图不仅可以简化用户对数据的理解,也可以简化对它们的操作,那些经常使用的查询可以被定义为视图,从而使得用户不必为以后的每次操作指定全部的条件。

3.2.安全性

视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其它或表既不可见也不可以访问。如果某一用户想要访问视图的,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响。

3.3.逻辑数据独立性

视图可以帮助用户屏蔽真实表结构变化带来的影响。




.net 调用sqlserver视图的评论 (共 条)

分享到微博请遵守国家法律