C#调用Sql Server存储过程,并且使用传入表结构

目录

定义DataTable

调用存储过程

C#配置文件

数据库存储过程


定义DataTable

private System.Data.DataTable dt = new System.Data.DataTable();

调用存储过程

cs 复制代码
 //存储数据库

conString = ConfigurationManager.ConnectionStrings["Con"].ConnectionString.ToString();
SqlConnection conn = new SqlConnection(conString);
conn.Close();
conn.Open();


 //创建指令对象

SqlCommand sqlCommand = new SqlCommand("InsertAccountingDocument", conn);
sqlCommand.CommandType = CommandType.StoredProcedure;   //存储过程
sqlCommand.Parameters.Add("@AccountingDocumentTable", SqlDbType.Structured).Value = dt;
sqlCommand.Parameters.Add("@gjahr", SqlDbType.Char, 4).Value = this.year;
 sqlCommand.Parameters.Add("@monat", SqlDbType.Char, 2).Value = this.month.PadLeft(2, '0'); //指定2位,不足位数时左边补零



if (begin == 1)
{
      sqlCommand.Parameters.Add("@begin", SqlDbType.Int).Value = 1;
}

else
 {
       sqlCommand.Parameters.Add("@begin", SqlDbType.Int).Value = 0;
 }
      sqlCommand.ExecuteNonQuery();
      conn.Close();

C#配置文件

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<configSections>
		<sectionGroup name="SAP.Middleware.Connector">
			<sectionGroup name="ClientSettings">
				<section name="DestinationConfiguration" type="SAP.Middleware.Connector.RfcDestinationConfiguration,sapnco" />
			</sectionGroup>
		</sectionGroup>
	</configSections>
	
	<!--连接字符串-->
	<connectionStrings>
		<add name="Con" connectionString="server=localhost;uid=sa;pwd=GDhs3225966;database=HS_Label_System;" />
	</connectionStrings>
	
	<SAP.Middleware.Connector>
		<ClientSettings>
			<DestinationConfiguration>
				<destinations>
					<!--310测试系统-->
					<!--<add NAME="S4D" USER="019246" PASSWD="GZdyg3225966" CLIENT="200" SYSNR="00" ASHOST="192.168.4.20" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="10" IDLE_TIMEOUT="600"/>-->
					<add NAME="S4D" USER="024083" PASSWD="Hs87654321" CLIENT="310" SYSNR="00" ASHOST="192.168.4.20" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="10" IDLE_TIMEOUT="600" />
					<!--500测试系统-->
					<add NAME="S4Q" USER="000072" PASSWD="Hs123456789" CLIENT="500" SYSNR="00" ASHOST="192.168.4.21" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="10" IDLE_TIMEOUT="600" />

					<!--800正式系统-->
					<add NAME="S4P" USER="000072" PASSWD="Hs123456789" CLIENT="800" SYSNR="00" ASHOST="192.168.4.23" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="10" IDLE_TIMEOUT="600" />
				</destinations>
			</DestinationConfiguration>
		</ClientSettings>
	</SAP.Middleware.Connector>

	<startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>

	<startup useLegacyV2RuntimeActivationPolicy="true">
		<supportedRuntime version="v4.0" />
	</startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

数据库存储过程

sql 复制代码
USE [HS_Label_System]
GO
/****** Object:  StoredProcedure [dbo].[InsertAccountingDocument]    Script Date: 02/07/2025 10:02:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		LiuHongyu
-- Create date: 2025-01-23
-- Description:	批量插入会计凭证
-- =============================================
ALTER PROCEDURE [dbo].[InsertAccountingDocument] 
	-- Add the parameters for the stored procedure here
	@AccountingDocumentTable as AccountingDocument readonly,
	@gjahr as char(4),
	@monat AS CHAR(2),
	@begin AS int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
	IF	@begin = 1
	BEGIN
		DELETE FROM AccountingDocument WHERE GJAHR = @gjahr and MONAT = @monat;
	END
    Insert into AccountingDocument(BUKRS,BUTXT,GJAHR,BELNR,BUZEI,MONAT,BLDAT,BUDAT,BLART,STBLG,SGTXT,BSCHL,HKONT,TXT20,GKONT,GKONT_1,BANUM,BADEC,ANLN1,TXT50,KOSTL,KTEXT,AUFNR,AUFTX,WAERS,KURSF,SHKZG,SWRBTR,HWRBTR,SDMBTR,HDMBTR,RFAREA)
    select BUKRS,BUTXT,GJAHR,BELNR,BUZEI,MONAT,BLDAT,BUDAT,BLART,STBLG,SGTXT,BSCHL,HKONT,TXT20,GKONT,GKONT_1,BANUM,BADEC,ANLN1,TXT50,KOSTL,KTEXT,AUFNR,AUFTX,WAERS,KURSF,SHKZG,SWRBTR,HWRBTR,SDMBTR,HDMBTR,RFAREA
    from @AccountingDocumentTable;

END
相关推荐
DP DPharness5 小时前
ClearAI、记忆插件与普通笔记,三种让 Agent 记住的路数对比
笔记
piikee7 小时前
粤语初学入门:从粤拼、九声六调到开口,一个普通话母语者的练习笔记
笔记·粤语入门·怎么学习粤语
by209997 小时前
vector 的模拟实现:扩容与边界的详细阐述(下)
c++·经验分享·vector·动态数组
许彰午8 小时前
01-Oracle数据库简介与版本选择
数据库·oracle
菜鸟~noob2338 小时前
【电子战】第三季预告—波武器与电子系统强力毁伤
开发语言·数据库·matlab·电子战
Seraphina3610 小时前
SQL注入(二)盲注
网络·数据库·经验分享·笔记·sql
白山编程大哥10 小时前
Carsim 2024.1 专业安装介绍:功能特性与应用场景详解
笔记
hss1234567810 小时前
整装落地与效果图差距有多大?从毫米级误差到ENF板材的量化拆解
笔记
疯狂的维修10 小时前
关于用C#写电机起保停控制
开发语言·c#
盟接之桥11 小时前
AI助手:你的7×24小时智能管家——让异常预警无处不在
大数据·网络·数据库·人工智能·制造·ai编程