esb实现sql查询Oracle数据库,esb流程的逻辑处理连接数据库//访问web service接口

2023-05-16

HL7V2Service(xml文件5-21)

DataConn conn = new ConnOracle();

conn.ConnString = this.setting["ESB数据库连接"];

BusinessFlow.HL7Msg msg = new BusinessFlow.HL7Msg();

msg.load(msg_in.get_str("hl7v2"));

string sql = msg.make_sql_hl7_send();

string err_code = "";

string err = "";

conn.exec(sql,out err);

if(err!="")

{

err_code="999";

err=err+ this.setting["ESB数据库连接"] ;

}

string ack = msg.make_ack(err_code,err) ;

msg_out.add_str("result",ack);

=======his_dept 连接数据库查dt

System.Data.DataTable dt = (System.Data.DataTable) (msg_in.get_parm("his_dept"));

DataConn conn = new ConnOracle();

if(dt==null||dt.Rows.Count<=0){

string Deptcode = (string)(msg_in.get_parm("Dept_code"));

string Deptname = (string)(msg_in.get_parm("Dept_name"));

conn.ConnString = this.setting["HIS数据库连接"];

string sql = "select * from his_dept where 1=1 ";

if(!string.IsNullOrEmpty( Deptcode)) {

sql+=" and dept_code ="+Deptcode;

}

if(!string.IsNullOrEmpty( Deptname)) {

sql+=" and dept_name ='"+Deptname+"'";

}

string err_code = "";

string err = "";

dt =conn.select(sql,out err);

if(err!="")

{

err_code="999";

err=err ;

msg_out.add_str("result",err);

}

else{

string xml = BusinessFlow.PubUtils.dt2xml(dt,"res","View_name","Infos");

xml = BusinessFlow.PubUtils.FormatXml(xml);

msg_out.add_str("sql",sql );

msg_out.add_str("result",xml );

}

}

else{

string xml = BusinessFlow.PubUtils.dt2xml(dt,"res","View_name","Infos");

xml = BusinessFlow.PubUtils.FormatXml(xml);

msg_out.add_str("result",xml );

}

=======

View_ZTBT_PATIENT_INFO(xml文件6-11)

System.Data.DataTable dt = (System.Data.DataTable) (msg_in.get_parm("View_ZTBT_PATIENT_INFO"));

//string xml = BusinessFlow.PubUtils.dt2xml(dt,"res","View_ZTBT_PATIENT_INFO","Infos");

//xml = BusinessFlow.PubUtils.FormatXml(xml);

System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

System.Xml.XmlElement data = doc.CreateElement("req");

System.Xml.XmlElement msgVersion = doc.CreateElement("msgVersion");

msgVersion.InnerText = "1.0.0";

System.Xml.XmlElement msgTime = doc.CreateElement("msgTime");

msgTime.InnerText = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

System.Xml.XmlElement msgType = doc.CreateElement("msgType");

msgType.InnerText = "xml";

data.AppendChild(msgVersion);

data.AppendChild(msgTime);

data.AppendChild(msgType);

System.Xml.XmlElement msgBody = doc.CreateElement("msgBody");

foreach (System.Data.DataRow dr in dt.Rows)

{

System.Xml.XmlElement row = doc.CreateElement("PatientData");

foreach (System.Data.DataColumn dc in dt.Columns)

{

string name = dc.ColumnName;

string v = "";

{

v = dr[name].ToString();

}

System.Xml.XmlElement cell = doc.CreateElement(name);

cell.InnerText = v;

row.AppendChild(cell);

}

msgBody.AppendChild(row);

}

data.AppendChild(msgBody);

doc.AppendChild(data);

string xml = doc.InnerXml;

Dictionary data2 = new Dictionary();

string err = "";

string xml_t=@"<?xml version=""1.0"" encoding=""utf-8""?>

";

data2["InputPara"]= xml;

string sss =BusinessFlow.HttpUtils.GetSOAP("http://192.168.1.103:8080/empi/empiApi.asmx","http://ztbtempi.com/webservices/PIXAdd",xml_t,data2,ref err);

msg_out.add_str("sss",sss );

msg_out.add_str("err",err );

msg_out.add_str("result",xml );

同步数据时,查询所有的太麻烦,可直接获取两边数据库的最大时间差之间的数据

select convert(varchar(19),isnull(max(create_date),getdate()),121) as create_date,

convert(varchar(19),isnull(max(update_date),getdate()),121) as update_date,

convert(varchar(19),isnull(max(remove_date),getdate()),121) as remove_date

from ztbt_patient_info

select * from View_ZTBT_PATIENT_INFO where

create_date >= to_date(substr( :create_date ,1,19),'yyyy-mm-dd hh24:mi:ss')

or

update_date >= to_date(substr( :update_date ,1,19),'yyyy-mm-dd hh24:mi:ss')

or

remove_date >= to_date(substr( :remove_date ,1,19),'yyyy-mm-dd hh24:mi:ss')

///

区分C#格式化时间和oracle格式化时间的不同

System.Data.DataTable dt = (System.Data.DataTable) (msg_in.get_parm("View_Item"));

string dtstart = msg_in.get_parm("dtstart").ToString();

string servicename = msg_in.get_parm("servicename").ToString();

string mothedname = msg_in.get_parm("mothedname").ToString();

string xml = BusinessFlow.PubUtils.dt2xml(dt,"res","View_Item","Infos");

xml = BusinessFlow.PubUtils.FormatXml(xml);

DataConn conn = new ConnOracle();

conn.ConnString = this.setting["HIS数据库连接"];

DateTime DtEnd = DateTime.Now;

TimeSpan span = DtEnd.Subtract(Convert.ToDateTime(dtstart)); //算法是dtwo 减去 dtone

string datediff = "";//span.Days + "天" + span.Hours + "小时" + span.Minutes + "分钟" + span.Seconds + "秒";// + span.TotalDays;

if(span.Days>0){

datediff+=span.Days + "天";

}

if(span.Hours>0){

datediff+=span.Hours + "小时";

}

if(span.Minutes>0){

datediff+=span.Minutes + "分钟";

}

if(span.Seconds>0){

datediff+= span.Seconds + "秒";

}

if(span.TotalDays>0){

datediff+= span.TotalDays.ToString().Substring(0,span.TotalDays.ToString().IndexOf('.')) + "毫秒";

}

//Encoding.Default.GetByteCount(message)/1000+"KB"

msg_out.add_str("usedTime",datediff );

string sql = " INSERT INTO servicemonitor (servicename,funname,messageid,messagesize,recievetime,isresponsed,responsedtime,usedtime,datetime) values "

+" ('" + servicename + "','" + mothedname +"', ' ','" + 0 + "',to_date('" +

dtstart + "', 'yyyy-mm-dd hh24:mi:ss'),'true',to_date('" +

DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")+ "', 'yyyy-mm-dd hh24:mi:ss'),'" + datediff + "',sysdate )";

string err_code = "";

string err = "";

int i = conn.exec(sql,out err);

if(err!="")

{

err_code="999";

err=err+ this.setting["HIS数据库连接"] ;

}

if(i>0){

msg_out.add_str("result_sql","插入成功!" );

}

else{

msg_out.add_str("result_sql",err );

}

//msg_out.add_str("esburl",esburl+"?cmd=save_serviceinfo");

//msg_out.add_str("resulthttp",resulthttp);

msg_out.add_str("result",xml );

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

esb实现sql查询Oracle数据库,esb流程的逻辑处理连接数据库//访问web service接口 的相关文章

  • 如何使用 JSON_TABLE 从 Oracle JSON 列获取键值作为结果集

    我用谷歌搜索了很多 似乎无法找到适合我的简单用例的简单解决方案 我在 Oracle 12C 数据库中有一个 json 列 当然实际上是一个带有 json 约束的 varchar 在该列中我存储了这样的 Map 表示 a 9 0847 b 8
  • 从 SQL Server 2012 查询结果中减去小时数

    我正在 SQL Server 2012 Management Studio 中的警报系统信号自动化平台数据库上运行查询 但遇到了一些问题 我的查询运行得很好 但我无法将结果细化到我想要的水平 我正在选择一些格式为的列DATETIME 我只想
  • 如果外键不存在,则添加外键约束(或者如果存在则删除外键约束)而不使用名称?

    我发现创建查询很困难 假设我有一个产品和品牌表 我可以使用此命令添加外键 ALTER TABLE Products ADD FOREIGN KEY BrandID REFERENCES Brands ID 但我只需要在外键不存在时运行此命令
  • 标记个体内事件发生后发生的日期

    我有一组长格式的数据 每人几行 人 id 其中事件 事件 1 应该只发生一次 事件发生后 该人不应再有任何数据 如果事件发生后出现任何记录 我想使用名为 flag flag 1 的新变量创建一个查询 例如 下面标记了 id 5 因为在该人的
  • SQL 用新值替换旧值

    我有一个名为tbl Products 其中有一列名为articlenumber并且充满了像这样的数字s401 s402 etc 我生成了一个包含新商品编号的列表 它将替换旧的商品编号 s401 I00010 s402 I00020 s403
  • 删除原始数据中部分重复的记录

    我需要删除表中时间间隔为 1 或 2 分钟或相同且必须相同的所有记录ID但保留第一个记录 ID Time SN SD WE FW 10 2014 06 30 19 17 37 000 I 0 100 0 10 2014 06 30 19 1
  • Mysql为简单频繁查询创建排序索引性能

    我正在处理一个包含大约 400 万条消息条目的 mysql 表 并尝试根据时间戳选择最新的 50 条消息 另一个要求是返回的消息不以固定前缀开头 问题是单个查询大约占用 25 的 cpu 并且最多需要 1 5 秒 该查询经常由多个客户端执行
  • 在 Android KitKat 中接收彩信

    所以这个视频Android 4 4 短信 API http www youtube com watch v mdq0R2WQssQ DevBytes 解释了 KitKat 中 SMS API 的最新变化 他们还提供了示例项目的链接 http
  • Sharepoint Server 对于 Excel Services 或 Excel Web Access 是必需的吗

    Excel Services 和 Excel Web Access 随 Microsoft Office SharePoint Server 2007 一起提供 我想知道是否可以在不运行 Sharepoint Server 的情况下使用 E
  • 为什么 sql 字段名称中不应该包含逗号?

    人们一直告诉我列名中不应包含空格 我只是想知道 这是为什么 这是我为学校创建的一些数据库表遇到的问题 字段名称包括 Preble 和 Darke 相反 它们需要是 普雷布尔县 俄亥俄州 和 达克县 俄亥俄州 如果它们是行名称 我只需创建一个
  • 按小时拆分日期/时间数据并将日期/时间范围展开为行

    我正在尝试使用 SQL Server 将一系列日期 时间数据扩展为多行 例如 我的数据看起来像 Date StartTime EndTime EmployeeID ShiftType 10 1 2019 8 30 00AM 4 57 00P
  • Oracle 获取列值发生变化的行

    假设我有一张桌子 比如 ID CCTR DATE 1 2C 8 1 2018 2 2C 7 2 2018 3 2C 5 4 2017 4 2B 3 2 2017 5 2B 1 1 2017 6 UC 11 23 2016 还有其他字段 但我
  • 我可以从匿名 PL/SQL 块向 PHP 返回值吗?

    我正在使用 PHP 和 OCI8 执行匿名 Oracle PL SQL 代码块 有没有什么方法可以让我绑定一个变量并在块完成后获取其输出 就像我以类似的方式调用存储过程时一样 SQL declare something varchar2 I
  • 基于列顺序的查询速度

    数据库中列类型的顺序对查询时间有影响吗 例如 具有混合排序 INT TEXT VARCHAR INT TEXT 的表的查询速度是否会比具有连续类型 INT INT VARCHAR TEXT TEXT 的表慢 答案是肯定的 这确实很重要 而且
  • MySQL:你能指定一个随机限制吗?

    有没有办法在 SQL MySQL 中随机化限制数字 我希望能够做的是在查询中获取随机数量的结果以在插入子查询中使用 而无需任何服务器端脚本 我希望能够作为假设说明运行的查询是 SELECT id FROM users ORDER BY RA
  • 仅当变量不为空时 SQL 添加过滤器

    您好 我有疑问如下 SELECT route id ROUTE ID FROM route master NOLOCK WHERE route ou 2 AND route query l s query AND lang id 1 这里
  • 获取查询的行号

    我有一个查询将返回一行 当表排序时 有什么方法可以找到我正在查询的行的行索引吗 我试过了rowid但当我期待第 7 行时却得到了 582 Eg CategoryID Name I9GDS720K4 CatA LPQTOR25XR CatB
  • UUID最大字符长度

    我们使用 UUID 作为 Oracle DB 的主键 并尝试确定 VARCHAR 的适当最大字符长度 显然这是 36 个字符 但我们注意到生成的 UUID 比这个长 长度最多为 60 个字符 有谁知道 UUID 的合适最大字符长度 RFC4
  • SQL Server PIVOT 函数

    我有一个检索所有代理及其模块的查询 结果集将每个模块返回 1 行 SELECT am agentID AS agentid pa agentDisplayName agentdisplayname m ModuleName ModuleNa
  • 如何检测 Postgres 中持有锁的查询?

    我想不断跟踪 postgres 中的互锁 我碰到锁具监控 https wiki postgresql org wiki Lock Monitoring文章并尝试运行以下查询 SELECT bl pid AS blocked pid a us

随机推荐