C#使用SQL存储过程完整流程



C#使用SQL存储过程完整流程

转载地址:http://blog.csdn.net/yangyuankp/article/details/7057922

标签: 存储sqlc#数据库stringsecurity

2011-12-09 17:29
8164人阅读 评论(1)
收藏
举报

本文章已收录于:


分类:

技术文章(50)

作者同类文章X

版权声明:本文为博主原创文章,未经博主允许不得转载。

唉,只怪自己学术不精,现在才学习SQL存储过程,从网上找了不少资料,可是很凌乱,定位也比较高,不适合我这样的小菜学习,现在我就来总结一下C#使用SQL存储过程完整的流程,以SQL2005为例。

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

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

代码如下:

[sql] view plain copy print?

  1. create proc myinsert -- 创建一个存储过程,名称为myinsert
  2. --这里写参数,如果有的话;没有的话就空着
  3. as
  4. --这里写具体语句,可以写N个
  5. go--可加可不加,go的意思是另起一页,相当于下一个功能块。如果下边不写语句,可以不加!
create proc myinsert -- 创建一个存储过程,名称为myinsert
--这里写参数,如果有的话;没有的话就空着
as
--这里写具体语句,可以写N个
go--可加可不加,go的意思是另起一页,相当于下一个功能块。如果下边不写语句,可以不加!

例如:

[sql] view plain copy print?

  1. create proc myinsert
  2. @username varchar(10),--注意这里的逗号,多个参数用逗号隔开
  3. @password varchar(10),
  4. @name varchar(10),
  5. @usertype varchar(10),
  6. @createpeople varchar(10)
  7. as
  8. insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople)
  9. go
create proc myinsert
	@username varchar(10),--注意这里的逗号,多个参数用逗号隔开
	@password varchar(10),
	@name varchar(10),
	@usertype varchar(10),
	@createpeople varchar(10)
as
	insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople)
go

这个存储过程可以向SystemUsers表中插入一条记录。

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

例如:

[sql] view plain copy print?

  1. use JF_Charging_System
  2. go
  3. create proc myinsert
  4. @username varchar(10),
  5. @password varchar(10),
  6. @name varchar(10),
  7. @usertype varchar(10),
  8. @createpeople varchar(10)
  9. as
  10. insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople)
  11. go
use JF_Charging_System
go
create proc myinsert
	@username varchar(10),
	@password varchar(10),
	@name varchar(10),
	@usertype varchar(10),
	@createpeople varchar(10)
as
	insert into SystemUsers(UserName,PassWord,Name,UserType,CreatPeople)values(@username,@password,@name,@usertype,@createpeople)
go

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

[csharp] view plain copy print?

  1. string strsql = "Data Source=192.168.24.53;Initial Catalog=JF_Charging_System;Persist Security Info=True;User ID=sa;Password=1";//数据库链接字符串
  2. string sql = "myinsert";//要调用的存储过程名
  3. SqlConnection conStr = new SqlConnection(strsql);//SQL数据库连接对象,以数据库链接字符串为参数
  4. SqlCommand comStr = new SqlCommand(sql, conStr);//SQL语句执行对象,第一个参数是要执行的语句,第二个是数据库连接对象
  5. comStr.CommandType = CommandType.StoredProcedure;//因为要使用的是存储过程,所以设置执行类型为存储过程
  6. //依次设定存储过程的参数
  7. comStr.Parameters.Add("@username", SqlDbType.VarChar, 10).Value = "11";
  8. comStr.Parameters.Add("@password", SqlDbType.VarChar, 10).Value = "11";
  9. comStr.Parameters.Add("@name", SqlDbType.VarChar, 10).Value = "11";
  10. comStr.Parameters.Add("@usertype", SqlDbType.VarChar, 10).Value = "11";
  11. comStr.Parameters.Add("@createpeople", SqlDbType.VarChar, 10).Value = "11";
  12. conStr.Open();//打开数据库连接
  13. MessageBox.Show(comStr.ExecuteNonQuery().ToString());//执行存储过程
  14. conStr.Close();//关闭连接
            string strsql = "Data Source=192.168.24.53;Initial Catalog=JF_Charging_System;Persist Security Info=True;User ID=sa;Password=1";//数据库链接字符串
            string sql = "myinsert";//要调用的存储过程名
            SqlConnection conStr = new SqlConnection(strsql);//SQL数据库连接对象,以数据库链接字符串为参数
            SqlCommand comStr = new SqlCommand(sql, conStr);//SQL语句执行对象,第一个参数是要执行的语句,第二个是数据库连接对象
            comStr.CommandType = CommandType.StoredProcedure;//因为要使用的是存储过程,所以设置执行类型为存储过程
            //依次设定存储过程的参数
            comStr.Parameters.Add("@username", SqlDbType.VarChar, 10).Value = "11";
            comStr.Parameters.Add("@password", SqlDbType.VarChar, 10).Value = "11";
            comStr.Parameters.Add("@name", SqlDbType.VarChar, 10).Value = "11";
            comStr.Parameters.Add("@usertype", SqlDbType.VarChar, 10).Value = "11";
            comStr.Parameters.Add("@createpeople", SqlDbType.VarChar, 10).Value = "11";
            conStr.Open();//打开数据库连接
            MessageBox.Show(comStr.ExecuteNonQuery().ToString());//执行存储过程
            conStr.Close();//关闭连接

希望对大家有所帮助!

时间: 2024-10-11 20:58:12

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

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

MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录.如何新建MyBatis源码工程请点击MyBatis源码分析-IDEA新建MyBatis源码工程. MyBatis框架主要完成的是以下2件事情: 根据JD

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

Mybatis的整个的执行流程.如下图所示: 原理详解: MyBatis应用程序根据XML配置文件创建SqlSessionFactory, SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession. SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession. MyBatis的优缺点 优点: 1.简

视图 触发器 存储过程 函数 流程过程 索引 慢查询

视图 触发器 存储过程 函数 流程过程 索引 慢查询 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 1.什么是视图 ? 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 ? 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调

SQL存储过程和函数

SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定义:存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令.和函数的区别在于,函数有返回值,存储过程没有. 优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度.2.当对数据库进行复杂操作时,

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

SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果都顺利插入成功了,当然没有问题,如果任意一张表插入失败了,而另一张表插入成功了,插入成功的表就是垃圾数据了.我们要判断,任意一张表插入失败都回滚,就是都不插入,这就是事务的基本使用. 一,sql事务定义 所谓事务是用户定义的一个数据库操作序列,是一个不可分割的工作

插入订单并且输出订单号的sql存储过程

--插入订单-- create proc InsertOrders ( @OrderNumber varchar(300), @OrderState varchar(30), @OrderType varchar(30), @OrderTime DateTime, @OrderFirm varchar(300), @OrderMoney decimal(8,2), @SendWayMoney decimal(8,2), @RegisterId int, @CoalitionOrdersId in

创建sql自定义的函数及商品分页sql存储过程

--商品筛选时判断品牌ID是否存在 --select dbo.isValite(94,94)create function isValite(@brandId int,@bId int)returns intas begin Declare @rNumber int if @brandId = @bId set @rNumber = 1 else set @rNumber = 0 if @bId = 0 set @rNumber = 1 return @rNumberendgo --判断商品筛选

sql存储过程和事务的应用

在去年,学习数据库的时候就学过存储过程了.一直都只知道一些理论,却不知道如何去使用.时隔一年,终于找到如何使用存储过程了. 在机房收费系统中,有些操作,需要多次执行sql语句,多次执行完成才算是完成这个事件流.但是如果其中有一个环节出了错误,那么没出错误的那些操作是不是就多余了. 执行存储过程,就是执行多句SQl语句.而事务,是为了控制这些语句 要么都做,要么 都不做. 在机房收费系统中,执行sql语句的时候. 一般的sql语句使用方法:定义一个字符串,用于存放sql语句.之后指明command

应届生校招找工作完整流程总结

原文发表自我的个人主页,请看原文,多谢支持 http://purplesword.info/get-job 昨天有同学问我找工作方面的事,感觉有很多疑问,想想有必要把我找工作那段时间学到的东西简单做个总结,供有需要的同学参考. 在找工作之前,和很多同学一样我有很多疑问,比如什么时候找工作这种事都不了解,但是找到工作之后,又忘了当初有哪些疑问.为了让这篇写的完整一点,我特地让一位对找工作不太了解.不愿透漏姓名的.机智的学弟帮忙,把他的疑问全部说出来,然后我汇总进行一个完整的总结.尤其是很多"脑残&