C# winform存储过程应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档