`
king_tt
  • 浏览: 2108552 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

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

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

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

创建一个简单的存储过程

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

CREATEPROC [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
privatevoidStroedprocedure()
{
stringcon=System.Configuration.ConfigurationManager.ConnectionStrings["consql"].ToString();
SqlConnection conn=newSqlConnection(con);
conn.Open();
//相应的存储过程名称及数据库连接
SqlCommand cmd = newSqlCommand("SelectUsers",conn);
// cmd.CommandType = CommandType.StoredProcedure;
//cmd.CommandText = "SelectUsers";
//cmd.Connection = conn;
SqlDataAdapter da = newSqlDataAdapter();
da.SelectCommand = cmd;
DataTable ds = newDataTable();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}

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

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

创建存储过程语句

create proc [dbo].[SelectParUsers]
(
@id int
)
as
begin
select * from dbo.FMS_Users whereuserId=@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
privatestaticDataTable Stroedprocedure(intid)
{
stringcon=System.Configuration.ConfigurationManager.ConnectionStrings["consql"].ToString();
SqlConnection conn=newSqlConnection(con);
conn.Open();
SqlCommand cmd = newSqlCommand("SelectParUsers", conn);
cmd.CommandType = CommandType.StoredProcedure;
//cmd.CommandText = "SelectParUsers";
//cmd.Connection = conn;
SqlDataAdapter da = newSqlDataAdapter(cmd);
cmd.Parameters.Add("@id", SqlDbType.Int, 32).Value = id;
//SqlDataAdapter da = new SqlDataAdapter(cmd);
//da.SelectCommand = cmd;
DataTable ds = newDataTable();
da.Fill(ds);
returnds
}

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
stringcon = System.Configuration.ConfigurationManager.ConnectionStrings["consql"].ToString();
SqlConnection conn = newSqlConnection(con);
conn.Open();
SqlCommand cmd = newSqlCommand("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 whereuserId=@id
end

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

?
stringcon = System.Configuration.ConfigurationManager.ConnectionStrings["consql"].ToString();
SqlConnection conn = newSqlConnection(con);
conn.Open();
SqlCommand cmd = newSqlCommand("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 setuserEMail=@email whereuserId=@id
end

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

?
1
2
3
4
5
6
7
8
9
10
stringcon = System.Configuration.ConfigurationManager.ConnectionStrings["consql"].ToString();
SqlConnection conn = newSqlConnection(con);
conn.Open();
SqlCommand cmd = newSqlCommand("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

分享到:
评论

相关推荐

    ASP.NET完全入门

    ASP.NET完全入门粗俗易懂适合初级程序员

    介绍套接字编程的基本原理,简单易懂

    介绍套接字编程的基本原理,对于有经验的开发人员和没经验的开发人员都有很好的参考价值。

    stm32时钟粗俗理解

    stm32时钟粗俗理解

    CS_ASP.NET_Forum:FTIT C#ASP .NET最终项目

    CS_ASP.NET_Forum FTIT C#ASP .NET最终项目: Web论坛Web应用程序。基本方面和思路: 用户帐号: 电子邮件地址:用于注册和发送通知(例如:注册,被其他用户引用,帐户被暂停); 用户名:唯一的字母数字字符串,...

    微软牛人总结的经典C#编码规范

    微软牛人总结的经典C#编码规范,粗俗易懂,很幽默,非常实用!

    王爽汇编语言及课后答案

    王爽老师写的 汇编,非常粗俗易懂, 新手学汇编的好书籍,并且还含课课后习题答案

    Zend Framework教程之模型Model用法简单实例

    本文实例讲述了Zend Framework教程之模型Model用法。分享给大家供大家参考,具体如下: 附一个简单粗俗的例子。只是大概说明了用法:如果要深究,可以自己跟踪源码了解。 model_demo1 │ .project │ .buildpath ...

    数据库设计系列之一.pdf

    数据库的逻辑结构、完整性约束和物理储存结构保存在内部 的中。数据库的各种数据操作(如查找、修改、插⼊和删除等)和数据库的维护管理都是以数据库模式为依据的。 (2)应⽤程序的编译:把包含着访问数据库语句的应⽤...

    正点原子领航者硬件下的 eeprom FPGA(verilog)编程(自己写的) 仅供参考

    https://blog.csdn.net/qq_31764341/article/details/124892541 eeprom 出于积累Verilog编程和调试经验的需求,用这个东西练手 使用的是正点原子领航者zynq的板子 ...描述都在博文里面,写的有点粗俗,各位凑合着看吧

    CrudeDevour:由于缺少xdotool,我制作了一个粗俗的吞噬脚本来摇摆

    粗暴的灵魂 由于缺少xdotool,我制作了一个粗俗的吞噬脚本来控制。 请注意名称,这些字迹很粗糙,是骇客,不是精心制作的艺术品。 版本号 没有标题栏 ... 另外,您可以在shell的rc文件中创建一个别名。

    hyde:Jekyll的一个粗俗的两栏主题

    hyde:Jekyll的一个粗俗的两栏主题

    HW美国某知名大学计算机博士家庭作业参考答案(仅供参考)

    他身后那条通道会立即消失,同时其他三个方向上可能会出现新的通道,当然也可能没有新通道出现,那就证明这是个死胡同,走不通,但此时你已经退不回去了,说的粗俗点就是“你挂了”。 现在让你编一个程序,在一个...

    王爽汇编语言第二版答案

    因此,本人预祝大家在学习的过程中能够在尽量短的时间内实现'不相信自己'到'相信自己'的过渡。 曾和王爽老师的两个学生有过交流,问他们为什么此书没有答案。他们说这是王爽老师特意不公开答案的,而目的就是希望...

    王爽汇编语言 chm电子书

    因此,本人预祝大家在学习的过程中能够在尽量短的时间内实现'不相信自己'到'相信自己'的过渡。 曾和王爽老师的两个学生有过交流,问他们为什么此书没有答案。他们说这是王爽老师特意不公开答案的,而目的就是希望...

    王爽《汇编语言》课后答案

    因此,本人预祝大家在学习的过程中能够在尽量短的时间内实现'不相信自己'到'相信自己'的过渡。 曾和王爽老师的两个学生有过交流,问他们为什么此书没有答案。他们说这是王爽老师特意不公开答案的,而目的就是希望...

    王爽《汇编语言》课后习题答案及实验解答(不完全版)

    因此,本人预祝大家在学习的过程中能够在尽量短的时间内实现'不相信自己'到'相信自己'的过渡。 曾和王爽老师的两个学生有过交流,问他们为什么此书没有答案。他们说这是王爽老师特意不公开答案的,而目的就是希望...

    王爽的汇编语言课后练习答案

    因此,本人预祝大家在学习的过程中能够在尽量短的时间内实现'不相信自己'到'相信自己'的过渡。 曾和王爽老师的两个学生有过交流,问他们为什么此书没有答案。他们说这是王爽老师特意不公开答案的,而目的就是希望...

    王爽《汇编语言》(附课后答案)

    因此,本人预祝大家在学习的过程中能够在尽量短的时间内实现'不相信自己'到'相信自己'的过渡。 曾和王爽老师的两个学生有过交流,问他们为什么此书没有答案。他们说这是王爽老师特意不公开答案的,而目的就是希望...

    laravelCrud-example:一个带有粗俗动作示例的项目

    laravelCrud-示例 创建,读取,更新和删除(CRUD)是模型最多应具备的四个基本功能。 使用 储存库设计模式。 notify.js。 让我们也去学习存储库设计模式!! 话题 创建,读取,更新,删除,搜索

Global site tag (gtag.js) - Google Analytics