名仕潜水员:数据库(sql)中存储过程与实际的程序开发是如何结合的?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 20:12:44
可以是b/s也可以是c/s中最好是c#的有一个小例子。
本人初学sql,希望哪位兄弟可以简单介绍一下这方面的知识,小弟这先谢了。

可以直接调用存储过程的名字执行。
Cmd.CommandText="delete from table1";
Cmd.ExecuteNonQuery();
效果等同于
Cmd.CommandText="存储过程名";
Cmd.ExecuteNonQuery();

如果是消耗资源比较大的sql语句,建议使用存储过程,数据库引擎会进行优化。

最简单的方法是用存储过程名调用

如:有一个存储过程 proccess1 有两个参数parameter1,parameter2
那么调用时用"proccess1 parameter1值,parameter2值"

存储过程
CREATE PROCEDURE process1
(
@parameter1 int,
@parameter2 int
)

AS
insert into table1
(p1,p2)
values(@parameter1,@parameter2)
RETURN

例1:
SqlConnection myConnection = new SqlConnection(连接字符传));
SqlCommand myCommand = new SqlCommand("process1 "+参数值1 +"," + 参数值2, myConnection);

还可以把Command对象的方式设为StoredProcedure
例2:
SqlConnection myConnection = new SqlConnection(连接字符传);
SqlCommand myCommand = new SqlCommand("process1", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
SqlParameter parameter1 = new SqlParameter("@parameter1", SqlDbType.Int, 4);
parameter1.Value = 参数1的值;
SqlParameter parameter2 = new SqlParameter("@parameter2", SqlDbType.Int, 4);
parameter2.Value = 参数2的值;
myCommand.Parameters.Add(parameter1);
myCommand.Parameters.Add(parameter2);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();

如果存储过程有返回值的话则只能用第二种方法