Cloud插件,链接oracle数据库
业务场景:客户需要在Cloud中获取第三方系统的数据,但是第三方系统的数据库是oracle,这是就需要连接oracle数据库获取数据了。
需要引用Oracle.ManagedDataAccess.dll这个类库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata.EntityElement;
using System.Text.RegularExpressions;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata;
using System.Data;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Cache;
//using System.Data.OracleClient;
using Oracle.ManagedDataAccess.Client;
using Kingdee.BOS.WebApi.Client;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Kingdee.BOS.Orm.DataEntity;
namespace GetDataPlugIn
{
public class GetData : AbstractBillPlugIn
{
K3CloudApiClient client = new K3CloudApiClient("http://win-bu6omsa7a39/K3Cloud/");
public override void ButtonClick(ButtonClickEventArgs e)
{
base.ButtonClick(e);
if (e.Key.ToUpperInvariant() == "F_DEV_BUTTON")
{
OracleConnection conn11 = null;
conn11 = OpenConn();
var cmd11 = conn11.CreateCommand();
string Sql;
Sql = "select * from EAS_T_Voucher ";
cmd11.CommandText += Sql;
cmd11.CommandType = CommandType.Text;
using (OracleDataReader rdr11 = cmd11.ExecuteReader())
{
DataTable dt11 = new DataTable();
dt11.Load(rdr11);
int RowCount11;
RowCount11 = dt11.Rows.Count;
for (int i = 0; RowCount11 > i; i++)
{
OracleConnection conn = null;
conn = OpenConn();
var cmd = conn.CreateCommand();
String VoucherId = dt11.Rows[i]["fid"].ToString();
String seleSql = "select * from EAS_T_VoucherEntry where 凭证ID='" + VoucherId + "'";
cmd.CommandText += seleSql;
cmd.CommandType = CommandType.Text;
using (OracleDataReader rdr = cmd.ExecuteReader())
{
DataTable dt = new DataTable();
dt.Load(rdr);
int RowCount;
RowCount = dt.Rows.Count;
int EntryRow = 0;
for (int j = 0; j < RowCount; j++)
{
EntryRow = this.View.Model.GetEntryRowCount("FEntity");
String LoanType = dt.Rows[j]["方向"].ToString();
Decimal FLocalAmount = Decimal.Parse(dt.Rows[j]["FLocalAmount"].ToString());
String DESCR = dt.Rows[j]["FDescription"].ToString();
String AccountItem = dt.Rows[j]["会计科目"].ToString();
String StrAssAct = dt.Rows[j]["核算项目"].ToString();
String Account = dt.Rows[j]["科目编码"].ToString();
if (!string.IsNullOrWhiteSpace(StrAssAct))
{
DateTime FBizDate = DateTime.Parse(dt.Rows[j]["业务日期"].ToString());
Decimal ItemAmount = Decimal.Parse(dt.Rows[j]["核算行金额"].ToString());
String EASAssNum = null;
String cus = dt.Rows[j]["客户"].ToString();
String Sup = dt.Rows[j]["供应商"].ToString();
String por = dt.Rows[j]["其他"].ToString();
String bank = dt.Rows[j]["银行账户"].ToString();
String admin = dt.Rows[j]["行政组织"].ToString();
String comp = dt.Rows[j]["公司"].ToString();
String cost = dt.Rows[j]["成本中心"].ToString();
String person = dt.Rows[j]["职员"].ToString();
String StrAssAct1 = dt.Rows[j]["FGeneralAssActType1ID"].ToString();
String StrAssAct2 = dt.Rows[j]["FGeneralAssActType2ID"].ToString();
String StrAssAct3 = dt.Rows[j]["FGeneralAssActType3ID"].ToString();
String StrAssAct4 = dt.Rows[j]["FGeneralAssActType4ID"].ToString();
String StrAssAct5 = dt.Rows[j]["FGeneralAssActType5ID"].ToString();
String StrAssAct6 = dt.Rows[j]["FGeneralAssActType6ID"].ToString();
String StrAssAct7 = dt.Rows[j]["FGeneralAssActType7ID"].ToString();
String StrAssAct8 = dt.Rows[j]["FGeneralAssActType8ID"].ToString();
String StrAssAct9 = dt.Rows[j]["FGeneralAssActType9ID"].ToString();
String StrAssAct10 = dt.Rows[j]["FGeneralAssActType10ID"].ToString();
String entryId = dt.Rows[j]["分录ID"].ToString();
if (StrAssAct8 != null)
{
String haha = StrAssAct8;
}
if (string.IsNullOrWhiteSpace(cus)
&& string.IsNullOrWhiteSpace(por)
&& string.IsNullOrWhiteSpace(bank)
&& string.IsNullOrWhiteSpace(admin)
&& string.IsNullOrWhiteSpace(comp)
&& string.IsNullOrWhiteSpace(cost)
&& string.IsNullOrWhiteSpace(person)
)
{
String AsstActType = "select fnumber from T_BD_GeneralAsstActType ";
if (!string.IsNullOrWhiteSpace(StrAssAct1))
{
AsstActType += "where fid = '" + StrAssAct1 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct2)
)
{
AsstActType += "where fid = '" + StrAssAct2 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct3))
{
AsstActType += "where fid = '" + StrAssAct3 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct4))
{
AsstActType += "where fid = '" + StrAssAct4 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct5))
{
AsstActType += "where fid = '" + StrAssAct5 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct6))
{
AsstActType += "where fid = '" + StrAssAct6 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct7))
{
AsstActType += "where fid = '" + StrAssAct7 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct8))
{
AsstActType += "where fid = '" + StrAssAct8 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct9))
{
AsstActType += "where fid = '" + StrAssAct9 + "'";
}
if (!string.IsNullOrWhiteSpace(StrAssAct10))
{
AsstActType += "where fid = '" + StrAssAct10 + "'";
}
OracleConnection conn2 = null;
conn2 = OpenConn();
var cmd111 = conn2.CreateCommand();
cmd111.CommandText += AsstActType;
cmd111.CommandType = CommandType.Text;
using (OracleDataReader rdr1 = cmd111.ExecuteReader())
{
DataTable zjy = new DataTable();
zjy.Load(rdr1);
int zjyCount;
zjyCount = zjy.Rows.Count;
for (int g = 0; g < zjyCount; g++)
{
EntryRow = this.View.Model.GetEntryRowCount("FEntity");
EASAssNum = zjy.Rows[g]["Fnumber"].ToString();
this.View.Model.SetValue("F_DEV_LoanType", LoanType, EntryRow - 1);
this.View.Model.SetValue("F_DEV_FLocalAmount", FLocalAmount, EntryRow - 1);
this.View.Model.SetValue("F_DEV_ItemAmount", ItemAmount, EntryRow - 1);
this.View.Model.SetValue("F_DEV_AccountItem", AccountItem, EntryRow - 1);
this.View.Model.SetValue("F_DEV_Account", Account, EntryRow - 1);
this.View.Model.SetValue("F_DEV_Voucherid", dt11.Rows[i]["fid"].ToString(), EntryRow - 1);
this.View.Model.SetValue("F_DEV_EASACCNO", dt11.Rows[i]["凭证号"].ToString(), EntryRow - 1);
this.View.Model.SetValue("F_DEV_EASAssNum", EASAssNum, EntryRow - 1);
this.View.Model.SetValue("F_DEV_StrAssAct", StrAssAct, EntryRow - 1);
this.View.Model.SetValue("F_DEV_Date", FBizDate, EntryRow - 1);
this.View.Model.SetValue("F_DEV_FEXPLANATION", DESCR, EntryRow - 1);
this.View.Model.CreateNewEntryRow("FEntity");
}
conn2.Close();
}
}
else
{
EntryRow = this.View.Model.GetEntryRowCount("FEntity");
EASAssNum = cus + Sup + por + bank + admin + comp + cost + person;
this.View.Model.SetValue("F_DEV_StrAssAct", StrAssAct, EntryRow - 1);
this.View.Model.SetValue("F_DEV_EASAssNum", EASAssNum, EntryRow - 1);
this.View.Model.SetValue("F_DEV_LoanType", LoanType, EntryRow - 1);
this.View.Model.SetValue("F_DEV_FLocalAmount", FLocalAmount, EntryRow - 1);
this.View.Model.SetValue("F_DEV_ItemAmount", ItemAmount, EntryRow - 1);
this.View.Model.SetValue("F_DEV_AccountItem", AccountItem, EntryRow - 1);
this.View.Model.SetValue("F_DEV_Account", Account, EntryRow - 1);
this.View.Model.SetValue("F_DEV_Voucherid", dt11.Rows[i]["fid"].ToString(), EntryRow - 1);
this.View.Model.SetValue("F_DEV_EASACCNO", dt11.Rows[i]["凭证号"].ToString(), EntryRow - 1);
this.View.Model.SetValue("F_DEV_Date", FBizDate, EntryRow - 1);
this.View.Model.SetValue("F_DEV_FEXPLANATION", DESCR, EntryRow - 1);
this.View.Model.CreateNewEntryRow("FEntity");
}
}
else
{
EntryRow = this.View.Model.GetEntryRowCount("FEntity");
this.View.Model.SetValue("F_DEV_StrAssAct", StrAssAct, EntryRow - 1);
this.View.Model.SetValue("F_DEV_LoanType", LoanType, EntryRow - 1);
this.View.Model.SetValue("F_DEV_FLocalAmount", FLocalAmount, EntryRow - 1);
this.View.Model.SetValue("F_DEV_AccountItem", AccountItem, EntryRow - 1);
this.View.Model.SetValue("F_DEV_Account", Account, EntryRow - 1);
this.View.Model.SetValue("F_DEV_Voucherid", dt11.Rows[i]["fid"].ToString(), EntryRow - 1);
this.View.Model.SetValue("F_DEV_EASACCNO", dt11.Rows[i]["凭证号"].ToString(), EntryRow - 1);
this.View.Model.SetValue("F_DEV_FEXPLANATION", DESCR, EntryRow - 1);
this.View.Model.CreateNewEntryRow("FEntity");
}
}
}
conn.Close();
}
}
conn11.Close();
}
}
static OracleConnection OpenConn()
{
try
{
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "Data Source= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.33)(PORT = 1521))" +
"(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test)));User Id=hrpdb;Password=password;";
conn.Open();
return conn;
}
catch (Exception)
{
//MessageBox.Show(ex.Message);
}
return null;
}
}
}
Cloud插件,链接oracle数据库的更多相关文章
- 历尽磨难之PL/SQL链接Oracle数据库
说起来都是泪啊,上司布置的任务需要远程连接Oracle数据库,说实话这又是我人生中的第一次.我听到以后觉得不是什么大问题,然而我错了..错的很厉害! 我搞了一天一夜才弄好,这里面原因有很多,大体来讲还 ...
- 关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理 ...
- 有关.NET链接Oracle数据库,使用连接池pooling=true时问题
.net链接oracle数据库时,当链接字符串中pooling=true时,视图结构变更时程序报错问题,还请高手指教 现象: 链接字符串: 注意:这里pooling=true: 测试视图: 执行的SQ ...
- Oracle 远程链接oracle数据库服务器的配置
远程链接oracle数据库服务器的配置 by:授客 QQ:1033553122 原理: 一.Oracle客户端与服务器端的通讯机制 1.OracleNet协议 如下图所示,Oracle通过Oracle ...
- 链接oracle数据库 生成表对应的javabean
package com.databi.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOExc ...
- Java JDBC链接Oracle数据库
package com.test.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import ja ...
- python链接oracle数据库以及数据库的增删改查实例
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
- Python链接Oracle数据库
说明:以下所需安装的所有软件版本必须跟系统一致,即系统是64位,软件就得是64位,否则会出现各种链接报错的情况. 现以64位系统,python 3.6.5 64位为例: (一)安装cx_Oracle ...
- ABP框架EF6链接Oracle数据库手动迁移
环境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB + Oracle 11Gx32Client(PLSQL工具访问) 一.Abp项目的下载以及运行 1.创建ab ...
随机推荐
- 【转】JAVA BIO与NIO、AIO的区别
Java中IO的模型分为三种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的AIO. BIO[同步阻塞] 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个Ser ...
- 我的一个React路由嵌套(多级路由),路由传参之旅
在上一篇react路由之旅中,我们简单地配置了react,进行了react路由及相关知识的学习,引入以及实现一个局部跳转的功能,接下来就是深入学习路由的嵌套以及传参,这是工作中主要用要的. 我的rea ...
- 使用Git和Svn
一. 使用SVN 1. 下载tortoiseSVN 2. 右键SVN checkout(下载项目到本地) 3. 更新和提交 二. 使用GIT 1. 下载git 2. 下载tortoiseGit 3. ...
- CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet
在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...
- js位运算-按位非
正数 取得二进制表示 取反(发现符号位是1,表示负数) 符号位不变,其余位取反 取反后加一 负数 取得负数的二进制表示(即绝对值的二进制反码加一) 取反即可
- Arm开发板+Qt学习之路
从2015.11.13日开始接触arm开发板,开始学习Qt,到现在已经四个月零17天了,从一个拿到开发板一无所知的小白,到现在能够在开发板上进行开发,有付出有收获. 之前一直没有时间将这个过程中的一些 ...
- MarkdownPad2 安装以及出现的错误(This view has crashed)
在这里首先感谢 堃堃5love 的解决办法 原文链接:https://blog.csdn.net/kunkun5love/article/details/79495618 声明:写这个是为了以后遇见问 ...
- C# 利用委托事件进行窗体间的传值(新手必看)
引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ...
- Python当中的len(),str(),input(),print()函数当中值得注意的点
在python当中很多时候会用到这三个函数,这也是考试当中十分常见的考点,这里做一些记录: 1.len():用于测量变量当中的字符串/元组等的长度 举个例子: >>> stt=&qu ...
- java设计模式1——单例模式
java设计模式1--单例模式 1.单例模式介绍 1.1.核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 1.2.常见场景 1.3.单例模式的优点 1.4.常见的五种单例模式实现 ...