使用 SAP .NET Connector
SAP 提供了一个专门的 .NET Connector,可以直接用于连接 SAP HANA 数据库。
1、下载配置SAP HANA客户端驱动程序
下载地址:https://tools.eu1.hana.ondemand.com/#hanatools
安装 SAP .NET Connector
项目中引用Sap.Data.Hana
SAP .NET Connector安装完成会在
C:\Program Files\sap\hdbclient\dotnetcore\v6.0
生成安装文件
建议把这2个dll,放在项目bin目录下和C:\Windows\System32下
要将其添加到项目中,请在解决方案资源管理器中右键单击项目的“引用”
文件夹,然后选择“添加引用...”
。在.NET选项卡中搜索“ Sap.Data.Hana.Net.v6.0”
引用,然后单击“确定”
。如果您使用的是.NET的其他版本,请从列表中选择一个。
"HanaConnection": "Server=10.11.35.2:30044;UserName=saphanadb;Password=Init123456;",
"SapClient": "610"
using HPRTWEBAPI.Application.Service.SapRfc.Dto.Response; using HPRTWEBAPI.Application.Service.SapRfc.Interface; using HPRTWEBAPI.Database; using Sap.Data.Hana; using System.Data; using System.Text; using Sap.EntityFrameworkCore.Hana; using NewLife.Reflection; using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;namespace HPRTWEBAPI.Application.Service.SapRfc {[ApiDescriptionSettings("SapHana", Name = "SapHana", Order = 100)][Route("api")]public class SapHanaService : ISapHanaService, IDynamicApiController, ITransient{private string connectionStringHana = App.Configuration["HanaConnection"].ToString();private string sapClient = App.Configuration["SapClient"].ToString();public SapHanaService(){}/// <summary>/// SapHana查询测试/// </summary>/// <returns></returns>[HttpGet("sap/GetAll")]public async Task<List<OuputKH>> GetAll(){using (HanaConnection conn = new HanaConnection(connectionStringHana)){//using (HanaDataAdapter dataAdapter = new HanaDataAdapter("SELECT PARTNER ,BU_GROUP FROM BUT000 WHERE PARTNER = '0010001942'", conn))//{// DataTable testTable = new DataTable();// dataAdapter.Fill(testTable);// var ouputKHs = testTable.ToList<OuputKH>();// return ouputKHs;//}string sql = @"SELECT PARTNER ,BU_GROUP FROM BUT000 WHERE BUT000.PARTNER=? AND CLIENT=?";HanaCommand command = new HanaCommand(sql, conn);command.Parameters.AddWithValue("@BUT000.PARTNER", "0010001942");command.Parameters.AddWithValue("@CLIENT", sapClient);using (HanaDataAdapter dataAdapter = new HanaDataAdapter(command)){DataTable testTable = new DataTable();dataAdapter.Fill(testTable);var ouputKHs = testTable.ToList<OuputKH>();return ouputKHs;}}}} }