• 数据库存储过程


    我们知道,在对数据库进行操作的时候,我们可以使用sql语句,也可以使用存储过程,那么使用存储过程有什么好处呢,首先它是预编译的语句,所以效率很高,其次就是很安全,用sql语句的时候有可能会被进行sql注入,存储过程完全被隐藏的,所以会避免,很安全,一般的情况下,一些小项目,比如web开发的时候,小企业站可以使用sql语句,大型的行业网站从安全和性能可以使用存储过程,下面就来存储过程的写法:

    其实这些东西都是死的,多写几遍就ok了

    A、不带参数的存储过程

    create proc stuInfo
    as
    select * from student
    go

    B、带参数的存储过程

    create proc stuBysex
    @sex varchar(50)
    as
    select * from student where sex=@sex
    go

    C、带输出参数的存储过程

    create proc stuOutNamebyid
    @outName varchar(50) output
    as
    select @outName=name from student where id=2

    go

    declare @outName varchar(50)
    exec stuOutNamebyid @outName output
    print @outName

    下面是增删改的存储过程

    增加

    create proc insertStu
    @name varchar(50),
    @sex varchar(50),
    @age int,
    @address varchar(50)
    as
    insert into Student(name,sex,age,address)values(@name,@sex,@age,@address)
    go

    exec insertStu 'shuang','女',34,'aaa'

    删除

    create proc delStu
    @id int
    as
    delete from Student where id=@Id
    go

    exec delStu '5'

    修改
    create proc UpdateStu
    @id int
    as
    update Student set name='aa' where id=@id
    go

    exec UpdateStu '4'

    在创建存储过程的时候可以为参数赋默认值

    alter proc proDemo
    @b datetime='2011-1-1',
    @c datetime='2011-5-30'
    as
    select top 20 * from  u_userinfo where regdate between @b and @c
    go

    但是执行的时候,如果没有参数,可以不用写...

    exec proDemo

    上面就是我们创建存储过程的写法,那么在程序中怎么使用,其实在不同的语言中各有个的调用方法,现在看看在.Net中怎么使用,看下面的例子

        public static IList<FileInfor> GetFile(int id)
        {
           using(OleDbConnection connecting=new OleDbConnection(Connstr))
           {
               OleDbCommand cmd = new OleDbCommand();
               cmd.Connection = connecting;
               cmd.CommandText="存储过程名称";
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Parameters.Add(new OleDbParameter("@id",id));
               connecting.Open();
               using(OleDbDataReader reader=c)
               {
               .......
               }
           }
        }

    最重要的是  cmd.CommandType = CommandType.StoredProcedure;默认的情况下是调用sql语句的时候cmd.CommandType = CommandType.Text,所以记得把这个地方改一下就行了,其他的参数该怎么传,还怎么传,但是要保证参数的名称要保持一致...

    多思考,多创新,才是正道!
  • 相关阅读:
    GCDPlot已提交到Sourceforge,成为开源项目[GCDPlot become a open source software in sourceforge]
    GCDPlot 0.32
    谈谈“科技人员和白领是购买盗版的主力”
    c正则匹配小计
    C++ 模板惯用法
    C++模板常用使用方法介绍
    常用正则表达式
    C++ 容易忘的基本语法和特性
    C++ 对象资源管理惯用法
    Int? 代表什么意思, 可为空的值类型(Nullable<T>)需要注意的地方
  • 原文地址:https://www.cnblogs.com/shuang121/p/1966341.html
Copyright © 2020-2023  润新知