C# winform存储过程应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以前习惯在代码中直接上sql语句,听说过存储过程。但是一直没怎么用过。最近尝试用了一下,感觉不错,起码代码中简单了不少;
不带参数的应用:
以删除数据库中数据为例:
表名:p1
各字段(类型):name (char(10)) age (int) sex (char) No(int)
应用1:删除表中序号(No)最大的那条记录
存储过程:
CREATE PROCEDURE p_deleteMessage_p1
AS
begin
delete from p1
where N0=(select MAX(N0)from p1)
end
程序中调用存储过程:
Private bool delete_Max_No_Record()
{
string sql_text="p_deleteMessage_p1";
try
{
cmd = new SqlCommand();
cmd.Connection = sqlconn;
mandType = CommandType.StoredProcedure;
mandText = sql_text;
cmd.ExecuteNonQuery();
return true;
}
catch
{ return false; }
}
带参数的应用,并且返回影响的行数:
以删除数据库中数据为例:
表名:p1
各字段(类型):name (char(10)) age (int) sex (char) No(int)
应用1:删除表中序号(No)小于某个值的所有记录:
存储过程代码:
CREATE PROCEDURE p_deleteMessage_p1_parameter
@no int,
@count int output
AS
BEGIN
SET NOCOUNT ON;
delete from p1
where N0<=@no;
set@count=@@ROWCOUNT
END
在代码中调用存储过程:
private bool deleteRecord(int No)
{
bool result = false;
string sql_text = "p_deleteMessage_p1_parameter";
try
{
cmd = new SqlCommand();
cmd.Connection = sqlconn;
mandType = CommandType.StoredProcedure;
mandText = sql_text;
SqlParameter pa1 = new SqlParameter("@no", No);
SqlParameter pa2 = new SqlParameter("@count",SqlDbType.Int);
cmd.Parameters.Add(pa1);
cmd.Parameters.Add(pa2);
cmd.Parameters["@count"].Direction = ParameterDirection.Output; cmd.ExecuteNonQuery();
int count =(int)cmd.Parameters["@count"].Value;
if (count > 0)
{ result = true;}
}
catch
{ return false; }
return result;
}