粗俗易懂的SQL存储过程在.NET中的实例运用

本文详细介绍存储过程在.NET数据库应用程序中的应用,包括创建、查询、增删改操作,并演示如何结合SqlDataAdapter和DataSet提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     整理了一下存储过程在项目中的运用,防止遗忘,便记录于此!存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。总的来说,存储过程具有以下一些优点: 

◆存储过程允许标准组件式编程 

◆存储过程能够实现较快的执行速度 

◆存储过程能够减少网络流量 

◆存储过程可被作为一种安全机制来充分利用 

本文作者将向大家介绍.NET数据库应用程序中存储过程的应用,以及如何将它与ADO.NET中的SqlDataAdapter对象、DataSet对象等结合使用以提高.NET数据库应用程序的总体性能。

创建一个简单的存储过程

1.不带参数的查询的存储过程

CREATE PROC [dbo].[SelectUsers]
AS
begin
SELECT * from dbo.FMS_Users
end

执行下一句即可得到结果:

exec SelectUsers

创建以上存储过程后,保存之。保存完毕,与该存储过程相对应的节点就会出现在服务器资源管理器中。同时请注意代码编辑窗口中的CREATE关键字变为ALTER关键字了,该关键字是用于更改任何现有的存储过程的。要运行上述存储过程,只要点击其节点并在右键弹出菜单中 执行存储过程”,运行的结果图示如下:

 

好了 接下来在IDE环境中去调用:

写一个方法在合适的地方调用即可

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private  void  Stroedprocedure()
         {
             string  con=System.Configuration.ConfigurationManager.ConnectionStrings[ "consql" ].ToString();
             SqlConnection conn= new  SqlConnection(con);
             conn.Open();
             //相应的存储过程名称及数据库连接
             SqlCommand cmd = new  SqlCommand( "SelectUsers" ,conn);
             // cmd.CommandType = CommandType.StoredProcedure;
             //cmd.CommandText = "SelectUsers";
             //cmd.Connection = conn;
             SqlDataAdapter da = new  SqlDataAdapter();
             da.SelectCommand = cmd;
             DataTable ds = new  DataTable();
             da.Fill(ds);
             
             GridView1.DataSource = ds;
             GridView1.DataBind();
            
 
             
         }

ok 已经完成了无参数的存储过程的实例调用!

第二有参数的存储过程的调用 (道理一样)

创建存储过程语句

create proc [dbo].[SelectParUsers]
(
  @id int
)
as
begin
select * from dbo.FMS_Users where userId=@id
end

执行以下语句即可得到结果

 exec SelectParUsers 22

通过某一个ID查找数据

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private  static  DataTable Stroedprocedure( int  id)
         {
             string  con=System.Configuration.ConfigurationManager.ConnectionStrings[ "consql" ].ToString();
             SqlConnection conn= new  SqlConnection(con);
             conn.Open();
           SqlCommand cmd = new  SqlCommand( "SelectParUsers" , conn);
             cmd.CommandType = CommandType.StoredProcedure;
             //cmd.CommandText = "SelectParUsers";
             //cmd.Connection = conn;
             SqlDataAdapter da = new  SqlDataAdapter(cmd);
             cmd.Parameters.Add( "@id" , SqlDbType.Int, 32).Value = id;
             //SqlDataAdapter da = new SqlDataAdapter(cmd);
             //da.SelectCommand = cmd;
             DataTable ds = new  DataTable();
             da.Fill(ds);
             
              return   ds          
 
             
         }

 ok 基本的查找数据的存储过程结束  下一篇是增 删 改的操作!实例下载

 

   上面一篇中简单的介绍到了存储过程的查询  接下来是增,删 ,改的实例!

增加的存储过程的代码

create proc [dbo].[InsertUsers]
(
 @username varchar(50),
 @userpwd varchar(50),
 @userphone varchar(50)
)
as
begin
insert into dbo.FMS_Users(userMark,userPassword,userPhone) values(@username,@userpwd,@userphone)
end

 

调用存储过程的实例

?
1
2
3
4
5
6
7
8
9
10
11
string  con = System.Configuration.ConfigurationManager.ConnectionStrings[ "consql" ].ToString();
            SqlConnection conn = new  SqlConnection(con);
            conn.Open();
            SqlCommand cmd = new  SqlCommand( "InsertUsers" , conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add( "@username" , SqlDbType.VarChar, 50).Value = "dfsdfsdfs" ;
            cmd.Parameters.Add( "@userpwd" , SqlDbType.VarChar, 50).Value = "fdffdfds@163.com" ;
            cmd.Parameters.Add( "@userphone" , SqlDbType.VarChar, 50).Value = "dfds3232" ;
            cmd.ExecuteNonQuery();
            //刷新数据
            Stroedprocedure();

 

删除的存储过程的代码

create proc [dbo].[DeleteUsers]
(

 @id int
 
)
as
begin
delete from dbo.FMS_Users  where userId=@id
end

调用删除的存储过程的实例

?
string  con = System.Configuration.ConfigurationManager.ConnectionStrings[ "consql" ].ToString();
             SqlConnection conn = new  SqlConnection(con);
             conn.Open();
             SqlCommand cmd = new  SqlCommand( "DeleteUsers" , conn);
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.Add( "@id" , SqlDbType.Int, 32).Value = 23;           
             cmd.ExecuteNonQuery();
             //刷新数据
             Stroedprocedure();
 
 

 

修改的存储过程的代码

create proc [dbo].[UpdateUsers]
(

 @id int,
 @email varchar(50) 
)
as
begin
update dbo.FMS_Users set userEMail=@email  where userId=@id
end

 

调用修改的存储过程的实例

?
1
2
3
4
5
6
7
8
9
10
string  con = System.Configuration.ConfigurationManager.ConnectionStrings[ "consql" ].ToString();
             SqlConnection conn = new  SqlConnection(con);
             conn.Open();
             SqlCommand cmd = new  SqlCommand( "UpdateUsers" , conn);
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.Add( "@id" , SqlDbType.Int, 32).Value = 21;
             cmd.Parameters.Add( "@email" , SqlDbType.VarChar, 50).Value = "f3dsfdr3234@163.com" ;
             cmd.ExecuteNonQuery();
             //刷新数据
             Stroedprocedure();

 

ok 全部完毕  !十一就这样的过去了!如果有哪位需要这个例子的话, 留下邮箱我发给你!希望多多和大家交流!

 

高人请问这些问题如何解决! 也是关于数据库的调用问题!这是我搜到的一些典型的案例!谢谢

http://topic.csdn.net/t/20060425/13/4712061.html
http://topic.csdn.net/u/20110314/16/115136f2-9d92-45d6-a909-e2b4d3269de2.html
http://www.cnblogs.com/zlhxinxi83/archive/2007/10/16/925978.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值