.net 调用sqlserver视图

数据库代码:
--表和数据
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.逻辑数据独立性
视图可以帮助用户屏蔽真实表结构变化带来的影响。