当前位置: 首页 > news >正文

.NET 直连SAP HANA数据库

前言

上个项目碰到的需求,IT部门要求直连SAP的HANA数据库,以只读的权限读取SAP部门开发的CDS视图,是个有点复杂的工程,需要从成品一直往前追溯到原材料的产地,和交货单、工单、采购订单有相当程度上的关联
IT部门要求一个物料组一个视图往前追溯,当时一个完整的物料追溯线就要做十多个视图,跟另一位同事熬夜加班加点一个多月到半夜两三点甚至通宵开发了七八十个视图,感觉寿命跟头发都少了不少
之所以我作为ABAPER要直连数据库是因为IT部门说我们的视图有问题,经常出现找不到视图的问题,当时我也不信邪就自己用C#做了这个直连的事儿,后来发现使用AMDP开发的视图如果修改后重新激活有可能会出现下述情况,问了乙方供应商也没得到问题的解决方案,后来同事做了个定时JOB去读取AMDP开发的视图,后面就没这个问题了
在这里插入图片描述

安装和配置ODBC驱动

当时做其他项目的时候给电脑装的ODBC,我这儿也没有具体的安装步骤,可以参考下其他人的博客
安装完之后启动ODBC客户端,转到系统DSN处(用户DSN我试了用这个连不上),点击添加按钮
在这里插入图片描述
选HDBODBC,这个驱动程序我也不知道哪儿来的,好像是安装hana client的时候就装上去了
在这里插入图片描述
数据库类型选择SAP HANA Database(Single-tenant)
数据库服务器地址和端口还有测试连接用的账号都是跟basis要的,basis万岁~
在这里插入图片描述
到这一步如果输入账号密码点击测试连接可以成功基本就没问题了
我的VPN账号到期了连不上了…

.Net代码连接数据库并查询视图

新建项目啥的都没啥讲的也懒得截图,选个C#的命令行项目就行,代码在下面

using System.Data;
using System.Data.Odbc;// DSN: 在ODBC 系统DSN 处配置的连接名
// UID: Basis给的数据库用户名
// PWD: Basis给的数据库密码
// DATABASENAME:Basis给的数据库名称
// 还有个语言的标识,好像是land=zh可以设置连接时语言使用中文,zh必须必须小写,大写会失败
String connStr = "DSN=HANADB;uid=xxxxxxx;pwd=xxxxxxxx;DatabaseName=xxx";
OdbcConnection conn = new OdbcConnection(connStr);conn.Open();TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //获取当前时间的刻度数// 查询时必须是SAPHANADB.XXX,很奇怪,一定要加上SAPHANADB.才能访问到表或者视图
OdbcCommand selectCmd = new OdbcCommand(" SELECT * FROM SAPHANADB.ZPPV001 where mandt = 300 ", conn);
//OdbcCommand selectCmd = new OdbcCommand(" SELECT * FROM SAPHANADB.ydemo WHERE mandt = 300  ", conn);
var adapter = new OdbcDataAdapter(selectCmd);DataTable dt = new DataTable();
// 这行语句就是在执行查询了,结果集会存到DataTable类型的变量dt中
adapter.Fill(dt);TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
TimeSpan ts = ts2.Subtract(ts1).Duration(); //时间差的绝对值
string spanTotalSeconds = ts.TotalSeconds.ToString(); //执行时间的总秒数
string spanTime = ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒" + ts.Milliseconds.ToString() + "毫秒" + ts.Microseconds.ToString() + "微秒"; //以X小时X分X秒的格式现实执行时间
Console.WriteLine(spanTotalSeconds);
Console.WriteLine(spanTime);conn.Close();if (dt != null) Console.Write("查询成功");

到这就差不多结束了,做的那七八十个视图不知道咋样了,听说其中有一个我做的视图崩了…可能数据量太大或者查询语句太复杂了吧,珍爱生命,远离溯源qaq

相关文章:

.NET 直连SAP HANA数据库

前言 上个项目碰到的需求,IT部门要求直连SAP的HANA数据库,以只读的权限读取SAP部门开发的CDS视图,是个有点复杂的工程,需要从成品一直往前追溯到原材料的产地,和交货单、工单、采购订单有相当程度上的关联 IT部门要求…...

HTML <from>表单

定义&#xff1a;<form>元素定义了一个表单&#xff0c;用户可以在表单中输入数据&#xff0c;这些数据可以被提交到服务器。 属性&#xff1a; action&#xff1a;指定表单提交时的目标URL&#xff08;服务器端脚本的地址&#xff09;。 method&#xff1a;定义提交表…...

Wpf 使用 Prism 实战开发Day28

首页汇总方块点击导航功能 点击首页汇总方块的时候&#xff0c;跳转到对应的数据页面 step1: 在IndexViewModel 中&#xff0c;给TaskBar 里面Target 属性&#xff0c;赋上要跳转的页面 step2: 创建导航事件命令和方法实现 step3: 实现导航的逻辑。通过取到 IRegionManager 的…...

如何让一个普通用户可以读写某个目录

循环设置这个目录以及上面每一级目录的读取和执行权限 sudo chmod -R orx /opt/software/yourdir 然后设置指定用户user1可以读写这个目录 sudo setfacl -Rm u:user1:rwx /opt/software/yourdir 读取acl sudo getfacl -R /opt/software/yourdir -R 是循环读取子目录和文件的意思…...

知识笔记——jieba分词初探

1. 简介 jieba 是python中一个非常好用的 中文分词组件&#xff0c;但它并不是只有分词这一个功能&#xff0c;还提供了很多在分词之上的算法&#xff0c;如关键词提取、词性标注等。 安装方式&#xff1a; pip install jieba2. 分词 支持 3 种分词模式&#xff1a;精确模式…...

GPT-4o:人工智能新纪元的开端

引言 近年来&#xff0c;人工智能领域的发展日新月异&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;各种生成预训练模型不断推陈出新。自OpenAI发布GPT-3以来&#xff0c;生成预训练模型在文本生成、语言理解等任务中展现了强大的能力。近期&a…...

探索AI去衣技术中的反射应用

在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展已经渗透到了我们生活的方方面面。其中&#xff0c;图像处理和计算机视觉作为AI的重要分支&#xff0c;正不断推动着创新应用的边界。今天&#xff0c;我们要探讨的是一个颇具争议但又技术上颇为有…...

一款高级管理控制面板主题!【送源码】

AdminLTE是一个完全响应的管理模板。基于Bootstrap5框架和JavaScript插件。高度可定制&#xff0c;易于使用。适用于从小型移动设备到大型桌面的多种屏幕分辨率。AdminLTE 是一个基于Bootstrap 3.x的免费高级管理控制面板主题。 https://github.com/almasaeed2010/AdminLTE —…...

​用 ONLYOFFICE 宏帮你自动执行任务:介绍与教程

使用 ONLYOFFICE 宏&#xff0c;可以来自动实现一些操作节省更多时间和精力。在本文中&#xff0c;我们集合了一些关于宏的教程&#xff0c;带您了解宏的工作原理&#xff0c;以及一些实例展示。 什么是 ONLYOFFICE 宏 如果您是一名资深 Microsoft Excel 用户&#xff0c;那么…...

C++ vector类

目录 0.前言 1.vector介绍 2.vector使用 2.1 构造函数(Constructor) 2.1.1. 默认构造函数 (Default Constructor) 2.1.2 填充构造函数 (Fill Constructor) 2.1.3 范围构造函数 (Range Constructor) 2.1.4 拷贝构造函数 (Copy Constructor) 2.2 迭代器(Iterator) 2.2.…...

QMetaObject::invokeMethod 简介

1. QMetaObject::invokeMethod的功能和用途 QMetaObject::invokeMethod是Qt框架中的一个功能强大的方法&#xff0c;它允许你以异步的方式调用QObject派生类的成员函数。这个功能特别有用&#xff0c;因为它允许你安全地在不同的线程之间调用方法&#xff0c;而不需要担心线程…...

2024-05-29 精神分析-孤独感-分析

摘要: 所谓的孤独感是种很笼统的感觉&#xff0c;可能包含了很多种不同的情绪。 比如&#xff0c;希望和他人建立联系&#xff0c;消除敌意&#xff0c;对他人愧疚&#xff0c;想要从他人那里获取关爱或者其他&#xff0c;也可能是感觉到自己的脆弱和无助&#xff0c;希望获得…...

开源与闭源AI模型的对决:数据隐私、商业应用与社区参与

引言 在人工智能&#xff08;AI&#xff09;领域&#xff0c;模型的发展路径主要分为“开源”和“闭源”两条。这两种模型在数据隐私保护、商业应用以及社区参与与合作方面各有优劣&#xff0c;是创业公司、技术巨头和开发者们必须仔细权衡的重要选择。那么&#xff0c;面对这些…...

[C语言]自定义类型详解:结构体、联合体、枚举

目录 &#x1f680;结构体 &#x1f525;结构体类型的声明 &#x1f525;结构的自引用 &#x1f525;结构体变量的定义和初始化 &#x1f525;结构体内存对齐 &#x1f525;结构体传参 &#x1f525;结构体实现位段&#xff08;位段的填充&可移植性&#xff09; &a…...

Vue3使用Composition API实现响应式

title: Vue3使用Composition API实现响应式 date: 2024/5/29 下午8:10:24 updated: 2024/5/29 下午8:10:24 categories: 前端开发 tags: Vue3CompositionRefsReactiveWatchLifecycleDebugging 1. 介绍 Composition API是Vue.js 3中新增的一组API&#xff0c;用于在组件中组…...

使用moquette mqtt发布wss服务

文章目录 概要一、制作的ssl证书二、配置wss小结 概要 moquette是一款不错的开源mqtt中间件&#xff0c;github地址&#xff1a;https://github.com/moquette-io/moquette。我们在发布mqtt服务的同时&#xff0c;是可以提供websocket服务器的&#xff0c;有些场景下需要用到&a…...

【笔记】软件架构师要点记录(2)

【笔记】软件架构师要点记录 20240523案例一案例二案例三案例四案例五案例六案例七案例十 20240523 基于前10个架构案例场景&#xff0c;对用到的专业术语进行整理&#xff0c;方便后续查看。 案例一 MVC架构风格组件交互方式 MVC是一种用来构建用户界面时采用的架构设计风格…...

56.野指针和悬空指针

一.野指针 野指针指的是指针指向的地址是未知的&#xff08;随机的&#xff0c;不正确的地址&#xff09;。 二.野指针出现的几种情况 1.定义指针未初始化 #include <stdio.h>int main(void) {int *p;*p 1;printf("*p is %d\n",*p); } 正确写法&#xff1…...

echarts-dataset,graphic,dataZoom, toolbox

dataset数据集配置数据 dataset数据集&#xff0c;也可以完成数据的映射&#xff0c;一般用于一段数据画多个图表 例子&#xff1a; options {tooltip: {},dataset: {source: [["product", "2015", "2016", "2017"],["test&q…...

AI界的“拼夕夕”登场,为上万张GPU寻找新使命

在AI领域&#xff0c;一个全新的竞争者已经悄然登场。 AI行业果真有着近乎颠覆性的魅力&#xff01; 此次事件之后&#xff0c;AI界也许会迎来新一轮的血雨腥风&#xff01; AI的潮流到底会怎样流转&#xff0c;天知道。 幻方量化&#xff0c;这家以量化投资闻名的公司&…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...