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
相关推荐
龙腾AI白云1 天前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
一 乐1 天前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
zzj_2626101 天前
MySQL常用操作
数据库·mysql
上海广测检测科技有限公司1 天前
欧盟NIS2指令对中国制造商的供应链合规传导:判定边界与Article 21十条措施解读
经验分享
其实防守也摸鱼1 天前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
haerapi1 天前
把 PostgreSQL 复制巡检做成可审计闭环:确定性采集、阈值判定与受控模型归纳
数据库·postgresql
璞致电子1 天前
基于 P201Pro 的 QPSK 无线收发|接收端基础知识 (2):从混乱星座到 QPSK 点簇,Costas‑Loop 载波同步 GNU Radio 实测
经验分享
淡海水1 天前
01-03-认知篇-C#内存模型深度解析
unity·c#·游戏引擎·.net·gc
微学AI1 天前
不让每一步都调用最贵模型:用蓝耘智能路由改造自主式研究 Agent
数据库·人工智能·蓝耘
yjb.gz1 天前
Oracle19 RAC查看集群状态及磁盘空间情况(巡检)
数据库