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接口 的相关文章

  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • 拆分列中的字符串并在列中添加值

    我有一个包含几行数据的表 如下所示 16 W 2 Work ALBO 00 Proposal ALxO Amendement 1 20091022 signed pdf 17 W 2 Work ALBO 00 Proposal Level1
  • SQL 删除表并重新创建并保留数据

    在我们最初的设计中 我们搞砸了表中的外键约束 现在表已充满数据 我们无法在不删除表中所有记录的情况下更改它 我能想到的唯一解决方案是创建一个备份表并将所有记录放在那里 然后删除所有记录 更改表并开始将它们添加回来 还有其他 更好 的想法吗
  • 在sqlite SQL语句中与order by子句结合使用limit

    下面的两条 SQL 语句总是会产生相同的结果集吗 1 SELECT FROM MyTable where Status 0 order by StartTime asc limit 10 2 SELECT FROM SELECT FROM
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 通过 Oracle 的数据库链接运行 SQL Server 存储过程

    参考如何通过数据库链接执行 Oracle 存储过程 https stackoverflow com questions 240788 how to execute an oracle stored procedure via a datab
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • 如何测量我的网站客户端的图像下载时间?

    在 Img 标签中 我们知道图像有一个 OnLoad 事件 该事件在图像完成加载时触发 但是我们能在图像开始下载时得到准确的测量结果吗 我正在尝试测量网站的页面加载时间 因此如果可能的话 了解加载图像需要多长时间将成为我分析的一部分 我想以
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 如何使用sql作为xml路径('')但保留回车符

    我有下面的代码 select select cast Narrative as Varchar max char 13 from officeclientledger where ptmatter matter and ptTrans 4
  • 执行带有 EXCEPTION 的 PostgreSQL 查询会导致两条不同的错误消息

    我有一个 PostgreSQL 查询 其中包含事务和列重复时的异常 BEGIN ALTER TABLE public cars ADD COLUMN top speed text EXCEPTION WHEN duplicate colum
  • 对 PLSQL 中的每个表执行

    我想要所有表中匹配特定名称条件的记录数 这是我构建的 SQL Declare SQLStatement VARCHAR 8000 BEGIN SELECT SELECT COUNT FROM Table Name INTO SQLState
  • 使用其他聚合中的数据检查命令的有效性

    我目前正在开发我的第一个更大的 DDD 应用程序 目前来说 它运行得很好 但我们从早期就陷入了一个让我无法停止思考的问题 在我们的一些聚合中 我们保留对另一个聚合根的引用 这对于整个应用程序非常重要 基于它们的 ID 因此不存在硬引用 删除
  • Delphi 5 中的 Oracle 数据库连接

    我正在使用 Delphi 5 版本 我想连接到 Oracle 数据库 我有 TDatabase 组件 我不知道如何通过 Delphi 连接到数据库 请提供连接数据库的步骤 谢谢 The TDatabase http docwiki emba
  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐