zoukankan      html  css  js  c++  java
  • 数据库存储过程

    我们知道,在对数据库进行操作的时候,我们可以使用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,所以记得把这个地方改一下就行了,其他的参数该怎么传,还怎么传,但是要保证参数的名称要保持一致...

    多思考,多创新,才是正道!
  • 相关阅读:
    CentOS6.5下安装Redis2.8.6和phpredis2.2.4扩展
    Centos系统安装 phpredis 扩展
    在centos6.3用yum安装redis
    CentOS 安装图形化界面方法
    解决Eclipse中文乱码
    apache mod_alias模块功能介绍
    php 使用serialize() 和 unserialize() 让对象成超级变量
    eclipse导入php项目
    php多文件上传类(含示例)
    PHP多图片上传类推荐
  • 原文地址:https://www.cnblogs.com/shuang121/p/1966341.html
Copyright © 2011-2022 走看看