SQLServer中存储过程StoredProcedure创建及C#调用(转)

SQLServer中存储过程StoredProcedure创建及C#调用(转)此文作为入门了解用,转自http://www.2cto.com/database/201502/378260.html存储过程就是已经编译好的、优化过的放在数据库服务器中的一些SQL语句;可供应用程序直接调用。使用存储过程有以下几个优点:1、执行速度比普通的SQL语句快2、便于集中控制3、可以降低网络的通信量4、保证数据库的安全性和完整性5、灵活性创建存储过程可…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

此文作为入门了解用,转自http://www.2cto.com/database/201502/378260.html

 

存储过程就是已经编译好的、优化过的放在数据库服务器中的一些SQL语句;可供应用程序直接调用。使用存储过程有以下几个优点: 
1、执行速度比普通的SQL语句快 
2、便于集中控制 
3、可以降低网络的通信量 
4、保证数据库的安全性和完整性 
5、灵活性

创建存储过程 
可以采用Transact-SQL语句来创建存储过程Stored Procedured。在Microsoft SQL Server Management Studio中Databases->Database Name->Programmability->Stored Procedures右键选择Stored Procedure就生成了一个创建存储过程的模板,修改其中的内容再执行就创建了Stored Procedured。

下面我首先以创建对表中插入数据的存储过程来为例。比如我的原始表是如下语句所创建的:

?
1
2
<code class=
" hljs sql"
>IF
NOT
EXISTS (
SELECT
*
FROM
sysobjects
WHERE
id = object_id(N
'Persons'
)
AND
OBJECTPROPERTY(id,N
'isUserTable'
) = 1)
CREATE
TABLE
Persons (Id_P
int
,LastName
varchar
(255),FirstName
varchar
(255),Address
varchar
(255),City
varchar
(255))</code>

Stored Procedure创建插入功能的SQL如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<code class=
" hljs sql"
>USE [databasename]
GO
/****** Object:  StoredProcedure [dbo].[insert_persions]    Script
Date
: 2/25/2015 11:14:11 AM ******/
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
IF OBJECT_ID (
'insert_persons'
,
'p'
)
IS
NOT
NULL
    
DROP
PROCEDURE
insert_persons;
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE
PROCEDURE
insert_persons
    
-- Add the parameters for the stored procedure here
    
@id
int
,
    
@lastname
varchar
(255),
    
@firstname
varchar
(255),
    
@adress
varchar
(255),
    
@city
varchar
(255)
AS
BEGIN
    
-- SET NOCOUNT ON added to prevent extra result sets from
    
-- interfering with SELECT statements.
    
SET
NOCOUNT
ON
;
 
    
-- Insert statements for procedure here
    
INSERT
Persons (Id_P, LastName, FirstName, Address, City)
    
VALUES
(@id, @lastname, @firstname, @adress, @city)
END
GO</code>

以上代码完成了首先检查Stored Procedure是否存在,如果存在先把该Stored Procedure删掉,然后再创建该Stored Procedure。而其功能则是通过传入的参数,插入一条记录。直接点击Execute或者按F5则以上代码被执行,相应的数据库下面将有一个Stored Procedure名字为insert_persons。以SQL Server 2014为例,只要刷新相应的数据库,再到Programmability->Stored Procedures下面就发现多了个dbo.insert_persons。

执行存储过程 
在Stored Procedures下面找到相应的存储过程,点击右键选择Execute Stored Procedure…就可以产生一个新的对话框,填写输入的参数再点击OK就执行完毕。回去查看相应的表会发现多了一行数据。 
这里写图片描述

 

当然我们也可以通过SQL语句来执行存储过程。

?
1
2
<code class=
" hljs ruby"
>
EXECUTE
insert_persons 5,
"Wang"
,
"San"
,
"Zhongguancun"
,
"Beijing"
EXECUTE
insert_persons @id = 6,@firstname =
"Wang"
,@lastname =
"San"
,@adress =
"Zhongguancun"
,@city =
"Beijing"
</code>

C#执行存储过程 
下面的代码比较简单的展示了如何利用C#来执行上面创建的存储过程:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<code class=
" hljs avrasm"
>            String conStr = @
"Data Source=host\SQLEXPRESS;Initial Catalog=dbtan;Integrated Security=SSPI"
;
            
SqlConnection con = new SqlConnection(conStr);
            
try
            
{
                
con.
Open
();
                
Console.WriteLine(
"Connect Sucess!"
);
 
                
SqlCommand com = new SqlCommand();
                
com.CommandType = System.Data.CommandType.StoredProcedure;
                
com.
Connection
= con;
                
com.CommandText =
"insert_persons"
;
 
                
SqlParameter pId = new SqlParameter(
"id"
, 10);
                
SqlParameter pLastName = new SqlParameter(
"lastname"
,
"last"
);
                
SqlParameter pFirstName = new SqlParameter(
"firstname"
,
"first"
);
                
SqlParameter pAdress = new SqlParameter(
"adress"
,
"pop"
);
                
SqlParameter pCity = new SqlParameter(
"city"
,
"Hangzhou"
);
 
                
com.Parameters.
Add
(pId);
                
com.Parameters.
Add
(pLastName);
                
com.Parameters.
Add
(pFirstName);
                
com.Parameters.
Add
(pAdress);
                
com.Parameters.
Add
(pCity);
 
                
com.ExecuteNonQuery();
            
}
            
catch (Exception e)
            
{
                
Console.WriteLine(e.ToString());
            
}
            
finally
            
{
                
con.
Close
();
            
}
            
Console.ReadKey();</code>

转载于:https://www.cnblogs.com/lyd2016/p/6039830.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164505.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机组成原理(哈工大)学习笔记

    计算机组成原理(哈工大)学习笔记文章目录计算机组成原理一 计算机系统概论 1 1 计算机系统简介一 计算机的软硬件概念二 计算机系统的层次结构三 计算机体系结构和计算机组成 1 2 计算机的基本组成 1 3 计算机硬件的主要技术指标一 机器字长二 运算速度三 存储容量三 系统总线总线的基本概念总线的分类总线的特性和性能指标总线控制 重点 四 存储器 1 概述一 存储器分类二 存储器的层次结构 2 主存储器 1 概述 2 半导体存储芯片简介 3 随机存取存储器 RAM 4 只读存储器 ROM 5 存储器与 CPU 的连接 6 存储器的校验 7 提高访存速度的措施 3

    2025年6月22日
    1
  • 数据库分区表关联

    数据库分区表关联数据库表分区场景: 现实业务中有两个表关系比较紧密,而且数据量比较大的时候,需要对两个表都进行分区,并能很好的发挥分表作用创建分区数据库表注意: 数据库表最好是在创建的时候就进行分区,不能对已经创建的普通表(堆表)再进行分区变为分区表,否则转换起来比较麻烦。createtableOCS_COLLECT_PEOPLE(COLLECT_IDV

    2022年5月3日
    51
  • 卸载奇安信天擎_奇安信天擎怎么卸载干净

    卸载奇安信天擎_奇安信天擎怎么卸载干净卸载奇安信

    2022年9月24日
    0
  • java局域网发送文件_Java如何实现局域网文件传输代码案例分享

    java局域网发送文件_Java如何实现局域网文件传输代码案例分享这篇文章主要介绍了java实现局域网文件传输的实例的相关资料,这里提供了实现代码可以帮助大家理解TCP及文件读写的知识,需要的朋友可以参考下java实现局域网文件传输的实例本文主要实现局域网文件传输的实例,对java的TCP知识,文件读写,Socket等知识的理解应用,很好的实例,大家参考下,实现代码:ClientFile.java/***更多资料欢迎浏览凯哥学堂官网:http://kai…

    2022年5月4日
    49
  • LVS DR负载均衡配置

    LVS DR负载均衡配置

    2021年9月11日
    49
  • 用Java代码实现学生管理系统[通俗易懂]

    用Java代码实现学生管理系统[通俗易懂]学生管理系统1.1项目演示1.2学生管理系统实现思路定义学生类主界面的代码编写添加学生的代码编写查看学生的代码编写删除学生的的代码编写修改学生的代码编写1.3定义学生类学生类:Student成员变量:学号:sid姓名:name年龄:age居住地:address构造方法:无参构造带四个参数的构造成员方法:每个成员变量对应给出get/set方法1.4主界面的代码编写思路用输出语句完成主界面的编写用Scanner实现键盘录

    2022年9月20日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号