【存款和储蓄进度,视图,不经常表,事务】的

  通过视图,我们可以很方便把几个表查询的结果串在一个虚拟表,方便我们查询,而不需要每次都写多表查询的语句。与此同时,虚拟表的字我们都可以写重命名的字,数据库安全性得到提升。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using 三层__登录;
using System.Data;
using System.Data.SqlClient;

namespace 视图查询复习
{
    class Program
    {
        private static string strConn = "server=.;database=Inferno1;integrated security=true;";   
        static void Main(string[] args)
        {

             object obj=-1;//接受事务返回的查询结果
            //事务的使用
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                conn.Open();
                using (SqlTransaction trans = conn.BeginTransaction())
                {
                    try
                    {
                        string sql = "insert into LeiGe values(@name,@age);select @@IDENTITY";
                        SqlParameter[] pms = new SqlParameter[]{
                     new SqlParameter("@name",SqlDbType.NVarChar,5),
                     new SqlParameter("@age",SqlDbType.Int)
                     };
                        pms[0].Value = 11111;
                        pms[1].Value = "aaa";
                     obj =SqlHelper.GetSingle(conn, trans, sql, pms);
                       trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();

                    }
                }
            }

            Console.WriteLine(obj);
            Console.ReadKey();
        }
    }
}

  因为语句被编译过,所以特别适合用来执行,查询、存储等常用指令,比如文章发布、文章删除、会员注册、会员登录等常用query我们都可以建立存储过程。

View Code

存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

===全局临时表创建方式,我就不重复写了,就是把上面的一个#改为两个#就可以了哈~

计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

简单演示下:(使用Sql调用视图,和使用正常的sql语句流程是一样的)

视图:

View Code

存储过程:

 

--3.存储过程

  使用范围:1.将一个复杂的查询封装成一个视图,这样再次使用就不用写了,减少Coding   2.只提供显示其中某几列,隐藏其它信息。

控制台部分:

视图和临时表通常都是讨论的查询方面。

概念:顾名思义,临时表即使存储临时数据的。当数据库关闭,临时表会自动清除。

--4.事务

  2).select * into #临时表名 from 你的表 (常用方式)

临时表相信很多人都用过,也有肯能,你用了,但不知道自己用了。那么就介绍下什么是临时表。

临时表分为两种:一种是本地临时表,一种是全局临时表

1.存储过程可以单独执行一条Sql语句 2.存储过程也可以执行其它Sql语句 3.存储过程在创建的时候就在服务器进行了编译,所以执行起来比单个Sql语句快

图片 1图片 2

存储过程,说白了就是Sql Server里面的逻辑语句。它通过预编译,然后调用时比传递Sql语句快很多。这样也可以减少网络带宽。

帮助类部分:

---2.视图

  使用范围:  1.当有一个子查询被重复使用时,可以做成临时表,提高查询效率。 2.当写存储过程复杂逻辑时,我们也可以用临时表存储一部分数据,然后从临时表查询我们需要的数据

存储过程,视图,临时表,事务等这些之前只是学过,但没有仔细想过是干啥的,什么情况下用。所以这就像别人让你去东边,你就去东边,但去了东边,却不知道去那干啥? 所以为了灵活应用,今天就来汇总下。

 事务就是保证事情的完整性,在出错时会自动进行回滚到原来状态。

      //Tansnsiction
       /// <summary>
       /// 2012-2-21新增重载,执行一条计算查询结果语句,返回查询结果(object)。
       /// </summary>
       /// <param name="connection">SqlConnection对象</param>
       /// <param name="trans">SqlTransaction事务</param>
       /// <param name="SQLString">计算查询结果语句</param>
       /// <returns>查询结果(object)</returns>
       public static object GetSingle(SqlConnection connection, SqlTransaction trans, string SQLString, params SqlParameter[] cmdParms)
       {
           using (SqlCommand cmd = new SqlCommand())
           {
               try
               {
                   PrepareCommand(cmd, connection, trans, SQLString, cmdParms);
                   object obj = cmd.ExecuteScalar();
                   cmd.Parameters.Clear();
                   if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                   {
                       return null;
                   }
                   else
                   {
                       return obj;
                   }
               }
               catch (System.Data.SqlClient.SqlException e)
               {
                   //trans.Rollback();
                   throw e;
               }
           }
       }
       private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
       {
           if (conn.State != ConnectionState.Open)
               conn.Open();
           cmd.Connection = conn;
           cmd.CommandText = cmdText;
           if (trans != null)
               cmd.Transaction = trans;
           cmd.CommandType = CommandType.Text;//cmdType;
           if (cmdParms != null)
           {


               foreach (SqlParameter parameter in cmdParms)
               {
                   if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                       (parameter.Value == null))
                   {
                       parameter.Value = DBNull.Value;
                   }
                   cmd.Parameters.Add(parameter);
               }
           }
       }

---1.临时表

 

事务在C#中的使用:

 视图其实和临时表有类似的地,就是都是一虚拟的表,不存储任何数据。 不同的是,视图可以永久保存起来,然后使用sql语句可以直接对视图进行查询。

go
create proc Pro_Handler
as
begin
select *from LeiGe where LAge=17
end
go
execute Pro_Handler   --执行存储过程

 

本地临表弊端即使当查询窗口关闭了,再打开就查询不到了。 而全局临时表,只要数据库没关闭,就可以继续查询。

go
create view Vw_LinShi
as
select LName from LeiGe where LId=2

go

select *from Vw_LinShi;

也希望对大家有帮助~

图片 3图片 4

===本地临时表创建方式(一个#号):1).create table #临时表名(ID int,UserName vnarchar(20))

本文由上海时时乐走势图发布于上海时时乐走势图官网,转载请注明出处:【存款和储蓄进度,视图,不经常表,事务】的

您可能还会对下面的文章感兴趣: