1. 程式人生 > >C#呼叫SQL Server引數過程傳參

C#呼叫SQL Server引數過程傳參

SQL SERVER生成測試環境: [sql] view plaincopyprint?
  1. Createdatabase Test;  
  2. go 
  3. USE [Test] 
  4. GO 
  5. if OBJECT_ID('Tab2','U') isnotnull
  6.     droptable Tab2 
  7. go 
  8. CREATETABLE [dbo].[Tab2]( 
  9.     [ID] [int] IDENTITY(1,1) NOTNULL
  10.     [TabID] [int] NOTNULL
  11.     [Name2] [nvarchar](50) NULL
  12. )  
  13. GO 
  14. SET IDENTITY_INSERT [dbo].[Tab2]
    ON
  15. GO 
  16. INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (1, 245575913, N'ID'
  17. GO 
  18. INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (2, 245575913, N'name'
  19. GO 
  20. INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (3, 277576027, N'ID'
  21. GO 
  22. INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (4, 277576027, N
    'Name2'
  23. GO 
  24. INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (5, 277576027, N'TabID'
  25. GO 
  26. SET IDENTITY_INSERT [dbo].[Tab2] OFF
  27. GO 
  28. if OBJECT_ID('P2','P') isnotnull
  29.     dropprocedure P2 
  30. go 
  31. Createprocedure P2 
  32. @StartID int
  33. @EndID int
  34. @Rowcount intoutput
  35. as
  36. select * from Tab2 where ID between
    @StartID and @EndID 
  37. set @[email protected]@ROWCOUNT 
  38. go 
Create database Test; 
go
USE [Test]
GO
if OBJECT_ID('Tab2','U') is not null
	drop table Tab2
go
CREATE TABLE [dbo].[Tab2](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[TabID] [int] NOT NULL,
	[Name2] [nvarchar](50) NULL
) 
GO
SET IDENTITY_INSERT [dbo].[Tab2] ON 
GO
INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (1, 245575913, N'ID')
GO
INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (2, 245575913, N'name')
GO
INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (3, 277576027, N'ID')
GO
INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (4, 277576027, N'Name2')
GO
INSERT [dbo].[Tab2] ([ID], [TabID], [Name2]) VALUES (5, 277576027, N'TabID')
GO
SET IDENTITY_INSERT [dbo].[Tab2] OFF
GO
if OBJECT_ID('P2','P') is not null
	drop procedure P2
go
Create procedure P2
(
@StartID int,
@EndID int,
@Rowcount int output
)
as
select * from Tab2 where ID between @StartID and @EndID
set @[email protected]@ROWCOUNT
go
--開啟Visual Studio—建立專案—選擇【控制檯應用程式】
[csharp] view plaincopyprint?
  1. #region Using Directives
  2. using System; 
  3. using System.Data; 
  4. using System.Data.SqlClient; 
  5. using System.Collections.Generic; 
  6. using System.Linq; 
  7. using System.Text; 
  8. using System.Threading.Tasks; 
  9. #endregion
  10. namespace TestExecute 
  11.     class Program 
  12.     { 
  13.         staticvoid Main(string[] args) 
  14.         { 
  15.             SqlConnection thisConnection = new SqlConnection(@"Server=(Local);Database=Test;User ID=sa;Password=1"); 
  16.             thisConnection.Open(); 
  17.             SqlCommand thisCommand = thisConnection.CreateCommand(); 
  18.             thisCommand.CommandType = CommandType.StoredProcedure; 
  19.             thisCommand.CommandText = "P2"
  20.             IDataParameter[] parameters = { 
  21.                 new SqlParameter("@StartID",SqlDbType.Int), 
  22.                 new SqlParameter("@EndID",SqlDbType.Int), 
  23.                 new SqlParameter("@Rowcount",SqlDbType.Int), 
  24.                 new SqlParameter("return_value",SqlDbType.Int) 
  25.             }; 
  26.             parameters[0].Value = "1"
  27.             parameters[1].Value = "5"
  28.             parameters[2].Direction = ParameterDirection.Output; 
  29.             parameters[3].Direction = ParameterDirection.ReturnValue; 
  30.             thisCommand.Parameters.AddRange(parameters); 
  31.             thisCommand.ExecuteNonQuery(); 
  32.             thisConnection.Close(); 
  33.             Console.WriteLine("@Rowcount:{0}\nReturn_value:{1}",parameters[2].Value,parameters[3].Value); 
  34.             Console.ReadKey(); 
  35.         } 
  36.     } 
#region Using Directives
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#endregion

namespace TestExecute
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection thisConnection = new SqlConnection(@"Server=(Local);Database=Test;User ID=sa;Password=1");
            thisConnection.Open();
            SqlCommand thisCommand = thisConnection.CreateCommand();
            thisCommand.CommandType = CommandType.StoredProcedure;
            thisCommand.CommandText = "P2";
            IDataParameter[] parameters = {
                new SqlParameter("@StartID",SqlDbType.Int),
                new SqlParameter("@EndID",SqlDbType.Int),
                new SqlParameter("@Rowcount",SqlDbType.Int),
                new SqlParameter("return_value",SqlDbType.Int)
            };
            parameters[0].Value = "1";
            parameters[1].Value = "5";
            parameters[2].Direction = ParameterDirection.Output;
            parameters[3].Direction = ParameterDirection.ReturnValue;
            thisCommand.Parameters.AddRange(parameters);
            thisCommand.ExecuteNonQuery();
            thisConnection.Close();
            Console.WriteLine("@Rowcount:{0}\nReturn_value:{1}",parameters[2].Value,parameters[3].Value);
            Console.ReadKey();
        }
    }
}

--按F5執行結果:

相關推薦

C#呼叫SQL Server引數過程

SQL SERVER生成測試環境: [sql] view plaincopyprint? Createdatabase Test;   go  USE [Test]  GO  if OBJECT_ID('Tab2','U') isnotnull    dropta

C#呼叫SQL Server分頁儲存過程

以SQL Server2012提供的offset ..rows fetch next ..rows only為例e.g.表名:Tab1 ---------------------------------- ID Name 1 tblAttributeGroupDetail 2

C#呼叫Sql Server 2008的儲存過程流程

前言 最近用到了sql server 2008的儲存過程,特此整理成文 流程步驟 1.獲取連結 SqlConnection myConnection = new SqlConnec

使用C#呼叫SQL Server的儲存過程

Form上有一個button按鈕,name:buttonProcedureClient。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Da

Yii2.0呼叫sql server儲存過程並獲取返回值

1、首先展示建立sql server儲存過程的語句,建立一個簡單的儲存過程,測試用。 1 SET ANSI_NULLS ON 2 GO 3 SET QUOTED_IDENTIFIER ON 4 GO 5 6 CREATE PROCEDURE [dbo].[register_info]

Excel使用ADO呼叫SQL Server儲存過程

測試環境:SQL Server 2014,Excel 2013前期在做一個現場投票的小軟體,準備使用Excel實現,工作簿中包含有兩個工作表,各包含一個命令按鈕,分別用於提交和檢視投票結果。問題出在檢視投票按鈕上,起初只是使用SELECT語句查詢,一切正常;後期對於投票結果需

C#與SQL Server儲存過程之一(建立):使用C#建立SQL Server的儲存過程

  通常,開發人員使用的是T-SQL來建立SQL Server的儲存過程、函式和觸發器。而現在的SQL Server 2005已經完全支援.NET通用語言執行時(CLR)了。這就意味著,你可以使用.NET的語言,如C#、VB.NET之類的來開發SQL Server的儲存過程、

C#呼叫SQL中的儲存過程中有output引數

           string strsql = string.Format("Sp_AutoTenderTrialAll");            SqlParameter[] sqlParam = new SqlParameter[]{             new SqlParameter("@

Sql Server 儲存過程呼叫儲存過程接收輸出引數,返回值

CREATE PROCEDURE [dbo].[GetCustomers]   (@rowcount INT OUTPUT)   AS        SELECT [CustomerID]         ,[CompanyName]         ,[ContactName]         ,[

VC6.0通過ADO呼叫SQL Server 2000的儲存過程出現引數過多的問題

今天在做畢業設計的時候遇到一個很奇怪的問題,我以前通過傳遞三個引數的儲存過程呼叫都還是很成功的,為什麼今天就不行了呢?程式碼如下: HRESULT hr; if (m_pCmd == NULL) { hr = m_pCmd.Creat

偶然所得!C#後臺呼叫.Net Web API [HttpPost] 問題(基本資料型別引數+自定義實體型別引數

(說明:以下程式碼僅做參考) 現象:定義一個API介面規範,介面引數包含三個,兩個string型別引數,一個自定義實體型別引數,C#控制檯或Winform程式如何傳送POST請求,訪問API介面? 示例如下,含API介面規範: 下面看C#後臺如何請求該API: 1、先

BCP工具的使用以及C++,SQL server資料庫中呼叫命令列的方法

BCP工具使用: BCP是由SYBASE公司提供的,專門用於資料庫表一級資料備份的工具。 主要引數如下: 基本用法: 遠端地址1的資料庫表student 匯出到本地(遠端ip1(10.189.1.1) ): bcp run.dbo.student out "c:\student

Java呼叫SQL Server的儲存過程詳解

                本文較長,包含了如下幾部分                    1使用不帶引數的儲存過程     使用 JDBC 驅動程式呼叫不帶引數的儲存過程時,必須使用 call SQL 轉義序列。不帶引數的 call 轉義序列的語法如下所示: {call procedure-name}

C++(筆記)容器(vector)作為函式引數如何

一、大致以下型別 void 函式名( vector< int> obj ); void 函式名( vector< int>* pobj ); void

SQL Server儲存過程Return、output引數及使用技巧

SQL Server目前正日益成為WindowNT作業系統上面最為重要的一種資料庫管理系統,隨著 SQL Server2000的推出,微軟的這種資料庫服務系統真正地實現了在WindowsNT/2000系列作業系統一統天下的局面,在微軟的作業系統上,沒有任何一種資料庫系統能

sql server儲存過程迴圈呼叫

ALTER PROCEDURE [dbo].[OMS_DISCOUNT_SHARING_PRO]   @lypt AS VARCHAR(10)  AS DECLARE @orderStatus VARCHAR(10); DECLARE @orderlypt VARCHAR(

sql server 儲存過程傳遞表名引數及Dynamic SQL

ALTER PROCEDURE [dbo].[sp_tablenametest] @table_name varchar(50), @PMId int, @ValueEq int AS BEGIN SET NOCOUNT ON; DECLARE @cmd AS NVARC

jdbc 呼叫 sql server 的儲存過程時“該語句沒有返回結果集”的解決方法

在JDBC中呼叫SQL Server中的儲存過程時出現如下異常:  com.microsoft.sqlserver.jdbc.SQLServerException: 該語句沒有返回結果集。            at com.microsoft.sqlserver

java呼叫sql server的儲存過程(dbutils)

一般我們在寫介面或者後臺的時候,java用的是springmvc框架,而連線資料庫則用到的是jdbc(原始的),為了更加方便,通過配置檔案的方式連線資料庫(sql server2008),通過兩天的學習,和自己的揣摩,終於弄出來了,為了給一些需要的又剛好沒有找到這個方法的程

SQL Server儲存過程,傳送陣列引數(多個引數)的變通辦法

        最近在做開發過程中碰到這麼一個糾結的問題,需要同時插入N條資料,不想在程式裡控制,但是SQL Sever又不支援陣列引數.所以只能用變通的辦法了.利用SQL Server強大的字串處理傳把陣列格式化為類似"3500320083208#350060052089