C#简单轻松调用存储过程(SqlServer2000)

之前做项目在用存储过程,都是按照MSDN给的例子,结果把存储过程的调用搞得极度复杂,C#代码写了一大堆,什么Input/Output的参数贯穿存储过程。

闲下来上网查了查,发现绝大部分的教程都是这样子的,想必自己写的代码也没有错。后来和别人聊起,才发现其实还有比较简单的方法,于是自己研究了一下,确实是几行代码就能搞掂,把它贴出来给大家参考参考,高手别见笑,^_^。

1、首先建立表abc
CREATE TABLE [dbo].[abc] (
 [a1] [int] IDENTITY (1, 1) NOT NULL ,
 [a2] [varchar] (50) NOT NULL ,
 [a3] [int] NOT NULL ,
 [a4] [varchar] (50) NOT NULL
) ON [PRIMARY]
GO 

数据

2、这里介绍两种情况的存储过程,第一种是查询表的,第二种是返回几个值的。

2.1>查询表的存储过程
CREATE PROCEDURE selectABC
(
@id int,
@a2 varchar(50)
)
AS
select * from abc where a1=@id and a2 like '%'+@a2+'%'
GO

2.2>返回几个值的
CREATE PROCEDURE outputABC
(
@id int,
@a2 varchar(50)
)
AS
declare @t varchar(50)

create table #tmp //建立临时表,用于记录返回的值
(
a1 int primary key,
a2 varchar(50)
)

select @t=a4 from abc where a1=@id and a2 like '%'+@a2+'%' 

//有多条记录可以直接在select插入,如使用select * into #tmp from abc的方式
insert into #tmp(a1, a2) values(20, @t)

select * from #tmp
GO

3、C#调用存储过程代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ProcedureDemo
{
    class DBManager
    {
        private SqlConnection sqlCon = null;

        public DBManager()
        {
        }

        public void ConDB()
        {
            try
            {
                sqlCon = new SqlConnection("Data Source=(local);Initial Catalog=demo;user id=sa;password=123");
                sqlCon.Open();
            }
            catch (Exception e2)
            {
                Console.WriteLine(e2);
            }
        }

        public DataSet ExecuteProc(string procName, SqlParameter[] sqlParams)
        {
            try
            {
                DataSet ds = new DataSet(procName);
                SqlCommand cmd = new SqlCommand(procName, this.sqlCon);
                cmd.CommandType = CommandType.StoredProcedure;
                for (int i = 0; i < sqlParams.Length; i++)
                {
                    cmd.Parameters.Add(sqlParams[i]);
                }
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds);

                if (ds.Tables[0].Rows.Count > 0) //偷懒一下,直接在这里输出了^_^
                {
                    Console.WriteLine(ds.Tables[0].Rows[0][0].ToString());
                    Console.WriteLine(ds.Tables[0].Rows[0][1].ToString());
                }
                return ds;
            }
            catch (Exception e2)
            {
                Console.WriteLine(e2);
            }
            return null;
        }
    }
}

使用代码
DBManager dbManager = new DBManager();
dbManager.ConDB();
SqlParameter[] sqlParams1 = new SqlParameter[2];
sqlParams1[0] = new SqlParameter("id", "1");
sqlParams1[1] = new SqlParameter("a2", "3");
dbManager.ExecuteProc("selectABC", sqlParams1);

SqlParameter[] sqlParams2 = new SqlParameter[2];
sqlParams2[0] = new SqlParameter("id", "2");
sqlParams2[1] = new SqlParameter("a2", "g");
dbManager.ExecuteProc("outputABC", sqlParams2);

结果输出:
1
234

20
4f34rt43

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下步骤来调用 SQL Server 存储过程: 1. 配置数据库连接:首先,你需要配置与 SQL Server 数据库的连接。你可以使用数据库连接字符串来指定数据库的服务器名称、身份验证信息和其他相关参数。 2. 创建 Web Service:接下来,你需要创建一个 Web Service,用于接收请求并调用存储过程。你可以使用任何支持 Web Service 的编程语言或框架,例如.NET、Java、Python等。 3. 调用存储过程:在 Web Service 的代码中,你可以使用相应的数据库连接库或驱动程序来连接到 SQL Server 数据库。然后,通过执行存储过程调用语句来调用存储过程。具体的调用方式可能因编程语言和库的不同而有所区别。 以下是一个示例 C# 代码片段,演示了如何使用 ADO.NET 调用 SQL Server 存储过程: ```csharp using System; using System.Data; using System.Data.SqlClient; public class MyWebService { public void CallStoredProcedure(string parameter1, string parameter2) { string connectionString = "Data Source=YourServer;Initial Catalog=YourDatabase;User ID=YourUsername;Password=YourPassword"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand("YourStoredProcedure", connection)) { command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@Parameter1", SqlDbType.VarChar).Value = parameter1; command.Parameters.Add("@Parameter2", SqlDbType.VarChar).Value = parameter2; command.ExecuteNonQuery(); } } } } ``` 请注意,这只是一个示例,你需要根据自己的实际情况进行适当的修改和调整。 希望这可以帮助到你!如果你有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值