整理了一下存储过程在项目中的运用,防止遗忘,便记录于此!存储过程(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/u/20110314/16/115136f2-9d92-45d6-a909-e2b4d3269de2.html
http://www.cnblogs.com/zlhxinxi83/archive/2007/10/16/925978.html