• 5,存储过程


    概要:

           LinQto SQL的使用非常方便。上个留言板的例子中,我们知道只要添加一个LinQ to SQL classes文件,只要将表拖进.dbml文件,vs就会帮你生成一系列的文件。同样,我们也可以将存储过程拖进.dbml文件。Vs也会帮你生成相应的方法,和新的字段。若你不想让存储过程生成新的字段,ReturnType中你可以选择数据库中表的字段类。

    内容:

           Vs帮你生成的存储过程代码:

                  [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.proc_SelectAdmin")]

                  publicISingleResult<Admin> proc_SelectAdmin()

                  {

                         IExecuteResultresult = this.ExecuteMethodCall(this, ((MethodInfo)

    (MethodInfo.GetCurrentMethod())));

                         return((ISingleResult<Admin>)(result.ReturnValue));

                  }

    此次学习的表Admin:      

    Login          nchar(10)   Checked

    PWD          nchar(10)   Checked

             User表:

    Login          nchar(10)   Checked

    PWD          nchar(10)   Checked

    存储过程:

             ALTER PROC [dbo].[proc_DeleUserByLogin]

    @Login nchar(10)

    AS

             delete dbo.[User] where Login=@Login

             ALTER PROC [dbo].[proc_InsertUser]

    @Login nchar(10),

    @PWD nchar(10)

    AS

             insert into dbo.[User]values(@Login,@PWD)

             ALTER PROC [dbo].[proc_SelectAdmin]

    AS

             SELECT * FROM dbo.Admin

             ALTER PROC[dbo].[proc_SelectAdminAndUser]

    AS

             SELECT * FROM dbo.Admin

             SELECT * FROM dbo.[User]

             ALTER PROC [dbo].[proc_SelectCountAdminByLogin]

    @Login nchar(10),

    @count int output

    AS

             set @count=(SELECT count(*) FROMdbo.Admin where Login=@Login)

             ALTER PROC[dbo].[proc_SelectStringAdminByLogin]

    @Login nchar(10)

    AS

             if exists (SELECT 1 FROM dbo.Adminwhere Login=@Login)

             return 123

             else

             return 456

             ALTER PROC [dbo].[proc_UpdateAdmin]

    @oldLoginnchar(10),

    @newLogin nchar(10)

    AS

             update dbo.Admin set Login=@newLoginwhere Login=@oldLogin

    1, 一般查询的存储过程

        LQDemo5DBDataContext ctx = newLQDemo5DBDataContext("连接");

        GridView1.DataSource =ctx.proc_SelectAdmin();

    GridView1.DataBind();

    或者我们使用Linq to object查询存储过程的结果:

    var ad = from c in ctx.proc_SelectAdmin() where c.Login=="admin" select c;

    2, 带参数

    int? m=-1;//表示可空的int类型,System.Nullable<T>的简写

    ctx.proc_SelectCountAdminByLogin("admin",ref m);

    Response.Write(m);

    3, 带返回值

    Response.Write(ctx.proc_SelectStringAdminByLogin("admin"));

    4, 多结果集

            //[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.proc_SelectAdminAndUser")]

            //publicISingleResult<proc_SelectAdminAndUserResult> proc_SelectAdminAndUser()

            //{

            //   IExecuteResult result = this.ExecuteMethodCall(this,((MethodInfo)(MethodInfo.GetCurrentMethod())));

            //   return((ISingleResult<proc_SelectAdminAndUserResult>)(result.ReturnValue));

            //}

    修改为:

           [Function(Name="dbo.proc_SelectAdminAndUser")]

            [ResultType(typeof(Admin))]

            [ResultType(typeof(User))]

            public IMultipleResultsproc_SelectAdminAndUser()

            {

                IExecuteResult result=this.ExecuteMethodCall(this,((MethodInfo)(MethodInfo.GetCurrentMethod())));

                return (IMultipleResults)(result.ReturnValue);

            }

                  使用的时候:

                         varrusult = ctx.proc_SelectAdminAndUser();

               var admin = rusult.GetResult<Admin>();

               var user = rusult.GetResult<User>();

                  注意:系统有时候会自动修改回原内容。

    5, 添加数据

    //语句和存储过程两种添加

    //User us = new User();

    //us.Login="usersss";

    //us.PWD = "pwdpwd";

    //ctx.Users.InsertOnSubmit(us);//没有主键,代码自带增删改不能用

    ctx.proc_InsertUser("useraaa","zxxcz");

      这里下载源码

  • 相关阅读:
    【python】学习笔记10-ddt数据驱动
    【python】学习笔记10-装饰器
    【Python】学习笔记8-多线程多进程
    【Python】学习笔记7-异常处理try。。except .. as e ....else
    【Python】学习笔记6-补充Flask模块:登录接口,mysql数据库、存redis-sesson、存浏览器cookie
    【Python】学习笔记6-创建Excel:xlwt,读取Excel:xlrd ,修改Excel:xlutils
    【Python】学习笔记6-网络编程urllib,request,请求rul
    【Python】学习笔记5-利用flask来mock接口
    【Python】学习笔记5-操作redis数据库redis
    【Python】学习笔记5-模块pymysql操作mysql数据库
  • 原文地址:https://www.cnblogs.com/yaoge/p/1816723.html
Copyright © 2020-2023  润新知