存储过程就是固化在SQL数据库系统内部的SQL语句,这样做的好处是可以提高执行效率、提高数据库的安全性、减少网络流量。接下来就讲解如何在数据库中建立一个存储过程。

打开SQL2055数据库,展开“数据库”节点,找到你使用的数据库(目的数据库),展开该数据库节点,找到“可编程性”节点并展开,就可以看到“存储过程”了,在“存储过程”上点击右键,新建存储过程。然后会弹出查询分析器,在这输入创建代码就可以了。

    create proc myinsert -- 创建一个存储过程,名称为myinsert
--这里写参数,如果有的话;没有的话就空着
as
--这里写具体语句,可以写N个
go--可加可不加,go的意思是另起一页,相当于下一个功能块。如果下边不写语句,可以不加!
    create proc myinsert
@username varchar(),--注意这里的逗号,多个参数用逗号隔开
@password varchar(),
@name varchar(),
@usertype varchar(),
@createpeople varchar()
as
insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople)
go
这个存储过程可以向SystemUsers表中插入一条记录。

     以上讲的是手动建立存储过程的方法,其实完全不必这么麻烦,直接点击SQL2005左上角的“新建查询”,打开查询分析器,然后在上边的语句中加入一句话:“use JF_Charging_System”意思就是使用某个数据库,也就是在哪个数据库中建立存储过程。

例如:
    use JF_Charging_System
go
create proc myinsert
@username varchar(),
@password varchar(),
@name varchar(),
@usertype varchar(),
@createpeople varchar()
as
insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople)
go

下面再来讲解如何在C#中调用存储过程。废话不过说,一段完整的代码+注释让你明白一切!这段C#代码和上边的存储过程是完全对应的。

            string strsql = "Data Source=localhost;Initial Catalog=######;Integrated Security=True";//数据库链接字符串
string sql = "SelectUserName";//要调用的存储过程名
SqlConnection conStr = new SqlConnection(strsql);//SQL数据库连接对象,以数据库链接字符串为参数
SqlCommand comStr = new SqlCommand(sql, conStr);//SQL语句执行对象,第一个参数是要执行的语句,第二个是数据库连接对象
comStr.CommandType = CommandType.StoredProcedure;//因为要使用的是存储过程,所以设置执行类型为存储过程
//依次设定存储过程的参数
comStr.Parameters.Add("@Param1", SqlDbType.Text).Value = "####";
conStr.Open();//打开数据库连接
// MessageBox.Show(comStr.ExecuteNonQuery().ToString());//执行存储过程
SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter(comStr);
DataTable DT=new DataTable ();
SqlDataAdapter1.Fill(DT);
dataGridView1.DataSource = DT;
conStr.Close();//关闭连接

C#使用SQL存储过程完整流程的更多相关文章

  1. MyBatis源码分析-SQL语句执行的完整流程

    MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简 ...

  2. MySQL数据库(六) —— SQL注入攻击、视图、事物、存储过程、流程控制

    SQL注入攻击.视图.事物.存储过程.流程控制 一.SQL注入攻击 1.什么是SQL注入攻击 import pymysql conn = pymysql.Connect( user="roo ...

  3. mysql 视图 触发器 事物 存储过程 函数 流程控制

    1.视图 *** 视图是有一条sql语句的查询结果构成的虚拟表 其不是物理存在的 使用方式与普通表相同 视图的作用1.简化sql语句的编写 2.限制可以查看的数据 可以使用权限来完成 权限某一个库 的 ...

  4. 深入理解java:4.3.1. 框架编程之MyBatis---SQL语句执行的完整流程

    Mybatis的整个的执行流程.如下图所示: 原理详解: MyBatis应用程序根据XML配置文件创建SqlSessionFactory, SqlSessionFactory在根据配置,配置来源于两个 ...

  5. SQL 存储过程入门(事务)(四)

    SQL 存储过程入门(事务)(四)   本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...

  6. SQL存储过程和函数

    SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定 ...

  7. 单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方式完整流程

    我们在之前的文章中中已经讲到了正确部署运行cas server 和 在cas client中配置. 在此基础上 我们去掉了https的验证,启用了http访问的模式. 单点登录(七)-----实战-- ...

  8. sql注入判断流程(结合sqli-labs学习)

    sql注入判断流程(结合sqli-labs学习) 类型一 类型判断 ?id=1 and 1=2 --+ 如果返回结果正常,说明不是数字类型 and 为两方都为真才算争取 ?id=1' --+ 显示不正 ...

  9. 3、myql的逻辑架构和sql的执行流程

    msyql逻辑架构 逻辑架构的解析 逻辑架构图如下(序号代表的是:服务器处理客户端请求的流程) 1.1connectors connectors是指使用不同语言的客户端与mysql server服务器 ...

随机推荐

  1. OC基础(20)

    Protocol基本概念 Protocol注意事项 Protocol类型限制 代理设计模式 *:first-child { margin-top: 0 !important; } body > ...

  2. [ CodeVS冲杯之路 ] P1092

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1092/ 嗯,这道题有一定难度啊,需要先用扩展欧几里得算法求出逆元,然后按照大小构一颗带边权为小时数的树 树链剖分后在树 ...

  3. Xml语言

    一.XML是什么?作用是什么? l  XML ( eXtensible Markup Language )语言是一种可扩展的标记语言.其中的可扩展是相对HTML来说的.因为XML标签没有被预定义,需要 ...

  4. JavaScript内置对象

    对象概述 JavaScript是一种基于对象的脚本语句,而不是面向对象的编程语言.对象就是客观世界存在的实体,具有属性和方法两方面特性. 访问对象的属性和方法的方式如下: 对象名.属性 对象名.方法名 ...

  5. 浅谈如何使用代码为MP3文件写入ID3Tags

    作者:郑童宇 GitHub:https://github.com/CrazyZty 1.前言 做了三年左右的Android开发,一直没写过博客,最近正好打算换工作,算是闲一些,就将以前开发所遇到的一些 ...

  6. 【LeetCode】12. Integer to Roman 整型数转罗马数

    题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...

  7. socket 和 SocketServer 模块

    一 .Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket socket(TCP,IP)通常也称作"套接字",用于描述IP地址和端 ...

  8. DB2命令大全

    1.1查看表空间 db2 list tablespaces show detail 1.2查看数据库的表死锁 方法一: 打开监控   db2 update monitor switches using ...

  9. 农村的“无为教育” (FW)

    农村的“无为教育” 发布时间:2009年11月5日 11时33分 “以孩子影响孩子”,准确地说,是以偏远乡村贫困家庭的进取孩子,影响城市有相当收入的“问题孩子”.有两点值得注意,一是农村孩子影响城市孩 ...

  10. C++ 中的返回值

    C++中大致有三种返回值:值拷贝(副本),值引用和指针,返回什么类型的值要根据当时情况而定. 如果返回的是大型对象的副本,那么在每一次的函数调用后返回,都会调用该对象类型的拷贝构造函数构造一个新的副本 ...