C#连接SAP HANA数据库读取数据

匿名 (未验证) 提交于 2019-12-02 23:37:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ot512csdn/article/details/90751158

SAP PO中间件系统,使用的SAP HANA数据库,平台上数据交换日志都写到BC_MSG_LOG这张表里,

但PO的管理界面提供的功能很弱,无法基于这张表的数据做多维度的统计和展示。

如果我们想做一些指标的展示,例如下面,我们需要在HANA数据库中自己读出这张表的数据。

C#对数据库的操作当然应该是用微软的EF框架,效率超高。

可惜HANA才推出不久,配套的微软EF框架还没出来。

那就先用ODBC试试:

一、在SAP官网下载HANA的client安装包(其中包含C#开发类库)

HDB_CLIENT_WINDOWS_X86_64_20190112.zip



安装完成后要重启动WIN10系统,然后ODBC里面才能看到HANA的驱动。

二、在系统ODBC里面,配一个连接出来。

三、打开VS2017,建一个WINFORM桌面程序,全部代码如下:

(注意项目用64位程序编译才能通过)

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;    namespace forHana {     public partial class Form1 : Form     {             public Form1()         {             InitializeComponent();              try             {                 //注意项目用64位编译                 OdbcConnection conn = new OdbcConnection("DSN=POD;UID=;PWD=;DatabaseName=POD");                 conn.Open();                      listBox1.Items.Add($"当前HANA数据库状态{conn.State}");                 listBox1.Items.Add($"当前连接的HANA数据库服务器的版本{conn.ServerVersion}");                  OdbcCommand selectCmd = new OdbcCommand("SELECT * FROM BC_MSG_LOG", conn);                 var adapter = new OdbcDataAdapter(selectCmd);                 DataTable dt = new DataTable();                 adapter.Fill(dt);                  listBox1.Items.Add("表行数:"+dt.Rows.Count.ToString());                  conn.Close();                   dataGridView1.Columns.Add("RowState", "rowstate");//添加新列                                 foreach (DataColumn col in dt.Columns)                 {                     dataGridView1.Columns.Add(col.ColumnName, col.ColumnName);                 }                 dataGridView1.Rows.Clear();                 dataGridView1.Rows.Add(dt.Rows.Count);//增加同等数量的行数                 int i = 0;                 foreach (DataRow row in dt.Rows)//逐个读取单元格的内容;                 {                     DataGridViewRow r1 = dataGridView1.Rows[i];                     r1.Cells[0].Value = row.RowState.ToString();                     for (int j = 0; j < dt.Columns.Count; j++)                     {                         r1.Cells[j + 1].Value = row[j].ToString();                     }                     i++;                 }                          }             catch (Exception e)             {                 listBox1.Items.Add(e.Message);                           }                      }     }  } 

我们到HANA数据库里读取BC_MSG_LOG表的数据,并显示出来:

这张表和C#环境连接上了,我们可以对这张表出各种维度的指标统计,包括识别错误消息后的告警。

文章来源: https://blog.csdn.net/ot512csdn/article/details/90751158
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!