通用数据接口管理系统(CDIsys免费版)v2.0上线发布
技术支持联系方式:QQ(36520783) 微信(13738196011)
在线演示地址:
https://124.71.168.14/cdi_demo/
账号密码:
guest/1
下载地址:
http://124.71.168.14/cdi_demo/CDIsys_v2.0(20210423).rar
目录
6.4接口参数说明
8.4失败:Parameter index out of range;
8.5失败:执行该接口出错(Cal_Data)SQLException:Column 'MENU_TYPE_A' not found.;
8.6失败:执行该接口出错(Cal_Data)SQLException:Column 'column_test' not found.;
.8.7失败:该业务平台对接口调用超过使用期限,期限时间为:2021-04-21 00:00:00;
8.8失败:该用户对接口调用超过调用次数,次数限制为10次每日,本日已调用20次;
8.10失败:失败,Common_Sql_Proc error:A01_MM98RT Query was empty;
8.12发送延时参数delay_data=0时显示系统一直卡顿或页面显示结果集数据;
1、工具介绍
本系统工具作为关系型数据库接口配置管理工具,可通过图形化界面配置各类数据接口,无需编写任何后台java代码,实现可视化配置即结果模式,易于扩展;可将程序开发人员的重复接口定义工作从繁琐的重复性后台代码中解脱出来,让程序开发人员更专注于数据业务的分析和理解。使用该系统人员需要对数据库具有一定应用基础知识,熟练掌握各类数据库SQL语句及存储过程编写能力。
工具共分为两部分:
cdi_demo为接口图形化定义界面功能。可对接口数据源、接口功能定义、输入参数、输出参数、返回值等各类功能进行界面管理操作。
cdi_CenterData为接口数据服务功能,提供预定义接口数据交互功能。
接口返回格式为json格式。
系统结构图:
2、工具特点
1)支持多数据源(最多9个)数据库接入;(sql server2005及以上版本、Oracle10g及以上版本、MYSSQL5.0及以上版本、Sqlite桌面型数据库、Access桌面型数据库);
2)数据接口定义完全图形化操作,无需编写任何开发代码;便于后期无限接口业务扩展;
3)接口数据调用权限化管理,包含接口调用期限,次数限值,IP绑定等接口权限管理功能;
4) 支持前端Javascript跨域获取数据操作,支持java、C#等主流开发语言后端获取数据或传递数据模式;
5)调用方式为web page(get、post均支持)方式,返回结果以json数据格式展示,支持基于html5的前端展示系统的数据接入;特殊字段采用url编码格式进行特殊字符编码转义处理;
6) 支持双权限认证模式(sub_code和sub_usercode);
7)用户接口时效性认证;
8)支持TCP长连接socket通讯方式获取数据;
9)支持移动终端APP微信授权登录服务端认证接口、支持移动终端APP支付宝授权登录服务端认证接口、支持移动终端微信支付服务端接口、支持移动终端支付宝支付服务端接口;
10)针对运算复杂数据接口支持延迟获取数据请求模式(初次请求数据命令,延时5分钟或10分钟请求数据结果);
11)支持动态配置数据传输编码格式(UTF-8,GBK, iso-8859-1 ..)
接口返回值格式严格按照如下:
{
"你的接口名称": [
{
"字段1": "值1",
"字段2": "值2",
"字段3": "值3"
},
{
"字段1": "值1",
"字段2": "值2",
"字段3": "值3"
}
]
}
JDK1.7,Tomat7,MySql5.7(静态配置库)
业务库支持MySql5.7,Oracle11g,Sql Server2008,Sqlite3。
4.1、资源说明
通用数据接口管理系统工具(CDIsys)
|--DataBase /*数据库文件夹*/
|----cdi_demo.sql /*静态配置库脚本*/
|----cdi_biz.sql /*demo业务库脚本*/
|--webapps /*java应程序*/
|----cdi_demo /*接口图形化定义功能界面*/
|------WEB-INF
|--------classes
|----------default
|------------jdbc.config /*数据库配置文件*/
|----------dev
|------------domain.config /*上传文件保存路径地址*/
|----cdi_CenterData /*数据接口运行服务程序*/
|------WEB-INF
|--------lib
|----------dbconfig.properties /*数据库配置文件*/
|----------log /*接口错误日志文件夹*/
标红部分为需要修改配置文件。
环境安装
请自行百度安装jdk1.7,tomcat7,mysql5.7。
4.2、静态配置库和业务库安装
利用数据库工具如:Navicat 或 MySQLWorkbench工具依次执行cdi_demo.sql和cdi_biz.sql脚本文件。
更改cdi_demo库中t_db_config表中的数据库配置信息标红部分:
更改对应数据库IP 账号和密码。
4.3、应用程序安装
将webapps复制到相应文件夹(建议非tomcat文件夹下),配置tomcat的conf/server.xml文件Host中添加如下标红部分信息:
/*以下复制粘贴*/
<Context docBase="F:\webapps\cdi_CenterData" path="/cdi_CenterData" debug="0" reloadbale="true" crossContext="true"></Context>
<Context docBase="F:\webapps\cdi_demo" path="/cdi_demo" debug="0" reloadbale="true" crossContext="true"></Context>
更改对应的配置文件:
4.4、tomcat跨域访问配置
配置tomcat的conf/web.xml添加如下内容
/*复制粘贴*/
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
将以下2个jar包从cdi_CenterData\WEB-INF\lib复制到tomcat/lib目录下。
4.5、启动tomcat
启动tomcat查看窗体或者log日志,出现如下标红信息则表示部署成功。
利用chrome浏览器访问 http://xx.x.x.x:xxxx/cdi_demo/
登录账号:admin
登录密码:1
5.1接口定义步骤说明
参考下图:
|
5.2数据源配置
菜单:接口管理---->数据源配置库
子系统驱动参考如下:
driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver" /sql server2005
driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver" /sql server2008
driverName="com.mysql.jdbc.Driver" /mysql
driverName="oracle.jdbc.driver.OracleDriver" /Oracle11g
driverName="sun.jdbc.odbc.JdbcOdbcDriver" /Access
driverName="org.sqlite.JDBC" /sqlite
子系统url参考如下:
url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=master" / sql server2005
url = "jdbc:sqlserver://localhost:1433;DatabaseName=EnvirMonitor_Inner" /sql server2008
url = "jdbc:oracle:thin:@localhost:1521:orcl" /Oracle11g
url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:/RMIStockMarket/Server/RMIStockMarket.mdb" /Access
url = dbc:sqlite:c:\\......\\DbName.db /sqlite
Url= "jdbc:mysql://xx.x.x.x:3306/DbName?autoReconnect=true&failOverReadOnly=
false&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull” /MySql
5.3应用平台信息
菜单:接口管理---->应用平台信息
管理接口参数sub_code
系统中默认添加了一个sub_code
5.4平台用户信息
菜单:接口管理---->平台用户信息
管理接口参数sub_usercode
系统中默认添加了一个sub_usercode
5.5接口一键管理
菜单:接口管理---->接口一键管理
子系统主键:下拉选择对应数据源;
接口中文名称:随便写;
接口英文名称:英文(区分大小写)+下滑线+数字,不要有特殊字符;
SQL语句:需要select或insert或delete的与,参数用?表示;
如:select SID,VALUE1 from tb_1 where SID = ? and VALUE1 = ?
或
insert into tb_1(SID,VALUE1) values(?,?)
Delete ......
类型:选择"SQL语句"或"存储过程",当选择"SQL语句"时,填写的SQL语句生效,当选择"存储过程"时,填写的SQL语句无效,同时接口英文名称必须与数据库中对应存储过程名一致;
备注:随便填写;
5.6接口输入参数
接口输入参数中文名称:随便输入
接口输入参数英文名称:随便输入
接口输入参数值类型:INT STRING。。类型
list表示sql中的 in (?)参数;
Likestring表示sql中的 like ‘%?%’参数;
接口输入参数大小:默认50;
参数是否Encode编码:当输入参数中有特殊字符,或中文字符对某些编码格式不一致情况下,建议将该参数进行html编码转义处理,此处则选择”是”;
接口输入参数顺序url接口调用中参数一致,如:
insert into tb_1(SID,VALUE1) values(?,?)这个接口SQL语句中,先定义输入参数:SID,在定义输入参数VALUE1,否则系统参数会错乱;
url中参数以param_value1,param_value2,Param_value3,
…………
5.7接口输出参数
本功能针对oracle数据源,其他数据源可忽略
当接口数据源为oracle数据库,且接口类型为存储过程,则用此输出参数;
当存储过程输出为游标则选择此类型
5.8接口返回值
定义接口返回数据集字段名,返回值需与SQL语句或存储过程结果集名称一致(区分大小写);
数据类型:选择对应类型
;
返回结果集中某一结果含特殊字符建议
选是,则表示该结果集html编码处理;
注意:若接口定义为insert或update或delet模式且无select返回结果集,则需定义
s_result (int类型) 和error_desc (string类型),两个返回值,否则接口调用会出错;参考下图:
5.9接口综合应用平台权限
给接口赋sub_code权限;
:表示接口调用次数限制类型按年、月、日统计;
5.10接口平台用户权限
给接口赋sub_usercode权限;
可参考5.9;
6.1接口调试
菜单:接口管理---->接口调试
以上三处标红table中选择对应的数据行,并点页面顶端“调试”按钮
弹出页面点“测试接口”可查看相关数据结果;
带输入参数接口:
以上步骤接口调试成功。
6.2页面引用接口
将6.1中接口url地址复制进浏览器直接查看接口应用情况;
将6.1中调用接口源码复制进js中并进行测试;
6.3附件上传接口
/*html代码*/
<form>附件1 <br>
<input id="mfFile" style="WIDTH: 600px" type="file" name="mfFile" />
</form>
/*jquery代码*/
var formData = new FormData(document.querySelector("form")); //获取form值
$.ajax({
url: "https://xx.x.xx.xx/cdi_CenterData/uploadFile",
type: "POST",
data: formData,
processData: false, // 不处理数据
contentType: false, // 不设置内容类型
success: function (input) {
data= $.parseJSON(input).A01_UpLoadFile;
alert(JSON.stringify(data));
}
});
6.4接口参数说明
http://xx.xx.x.x:/cdi_CenterData/getdata.jsp?sub_code=xxxxxx&sub_usercode=xxxxxx¶m_name=A01_xxxxx¶m_value1=13xxxxx¶m_value2=xxxxx
关键参数:
session_id 用户session_id
sub_code 综合平台授权
sub_usercode 综合平台用户授权
param_name 接口名称
param_value1 输入参数1
param_value2 输入参数2
......
delay_data 延时接收数据0:发送请求 1:获取数据
delay_code 延时接收数据code,32位GUID
is_xml 是否返回为xml格式:1是 其他否
param_dbname 数据库多实例操作其中实例名(针对oracle)
具体表见:cdi_demo库t_param_value表
或菜单:接口管理---->系统参数
主键 | 系统参数key | 系统参数value | 系统参数名称 | 备注 |
1 | AccSocketPort | 9122 | 本设备服务端口 |
|
2 | Inf_Name | CenterData? | 平台访问函数名 |
|
3 | ServerIP | 0.0.0.0 | 访问父级设备IP |
|
4 | ServerPort | 6001 | 访问父级设备端口 |
|
5 | Child_Code | BE2044975714406E88A68126898D40E6 | 本设备唯一编码 |
|
6 | If_Child_Device | 0 | 是否TCP client服务启动 |
|
7 | If_Parent_Device | 0 | 是否tcp server服务启动 |
|
8 | TimeCount | 5000 | 子级设备数据回传时间 |
|
9 | HTTP_Path |
| 图片访问路径 |
|
10 | Login_Session | 1 | 是否需要登陆Session |
|
11 | Is_UserLogin | [A01_CG3NLW] | 用户登陆或新用户注册接口 | 格式:[][][] |
12 | InterSession | T01_SELSSS,init_page,OSS_TOKEN, | 需要Session验证的接口 | 格式:中间用逗号隔开 |
13 | APP_ID |
| APP应用ID |
|
14 | APP_PRIVATE_KEY |
| PRIVATE KEY |
|
15 | ALIPAY_PUBLIC_KEY |
| PUBLIC KEY |
|
16 | U_CODE | UTF-8 | 接口数据返回编码格式 |
|
17 | AliPay_Check |
| 数据确认 |
|
18 | Ali_Login |
| 授权登陆 |
|
19 | WxPay_Check |
| 微信支付校验 |
|
20 | AliPay_Check2 |
| 支付宝支付校验 |
|
22 | EncryptUtilType | 1 | EncryptUtilType | 用户密码加密方式 |
23 | ShowSqlError | 1 | 是否显示SQL错误信息 |
|
24 | SessionTimeOut | 30 | Session超时设置 |
|
25 | CustTimeTaskNum |
| 自定义定时器参数 | 毫秒为单位,多个定时器用分号隔开 |
26 | CustTimeREFLECT_IN_CLASS |
| 自定义定时器拦截器 | 自定义定时器拦截器,多个拦截器用分号隔开 |
29 | ServerREFLECT_IN_CLASS |
| 作为服务端接收数据拦截器 | 作为服务端接收数据拦截器 |
30 | ClientREFLECT_IN_CLASS |
| 作为客户端接收数据拦截器 | 作为客户端接收数据拦截器 |
31 | UpLoad_File | F:\webapps\cdi_demo\file\upload | 文件附件上传路径 | F:\webapps\cdi_demo\file\upload |
32 | iReturnUppLower | 0 | iReturnUppLower | 1 json返回值字段大写 2 json返回值字段小写 |
注意:更改参数value请重启tomcat
8.1失败:该业务平台code未授权;
错误信息:
{"A01_TEST":[{"s_result":"0","error_desc":"该业务平台code未授权"}]}
答:请检查sub_code是否正确或sub_usercode是否正确或param_name是否正确。
8.2失败:For input string: \"\";
错误信息:
{"A01_TEST":[{"error_desc":"失败,data base DB2.Common_Sql_Proc error:A01_TEST For input string: \"\"","s_result":"0"}]}
或
{"A01_TEST":[{"error_desc":"失败,data base DB2.Common_Sql_Proc error:A01_TEST For input string: \"测试参数\"","s_result":"0"}]}
答:1、请检查输入参数个数是否缺失。
2、或某个参数输入值不为空。
3、或某个参数输入类型不对,应该为整型却输入类字符型值。
8.3某个返回值为转义码;
返回信息:
{"A01_TEST":[{"MENU_TYPE":"2","MENU_URL":"'%22!%40%23%24%24%25%5E%5E%26*()-%3D%2B%5B%7B.html","MAIN_ID":"10","MENU_NAME":"","MENU_ICON":""}]}
答:请确认接口返回值中该字段是否Encode编码
8.4失败:Parameter index out of range;
错误信息:
{"A01_G6HHK8":[{"s_result":"0","error_desc":"失败,data base DB2.Common_Sql_Proc error:A01_G6HHK8 Parameter index out of range (1 > number of parameters, which is 0)."}]}
答:请确认接口定义中输入参数个数是否和sql语句参数或存储过程参数一致。
8.5失败:执行该接口出错(Cal_Data)SQLException:Column 'MENU_TYPE_A' not found.;
错误信息:
{"A01_G6HHK8":[{"s_result":"0","error_desc":"执行该接口出错(Cal_Data)SQLException:Column 'MENU_TYPE_A' not found."}]}
答:请确认接口返回值是否和sql语句或存储过程返回结果集大小写一致。
8.6失败:执行该接口出错(Cal_Data)SQLException:Column 'column_test' not found.;
错误信息:
{"A01_G6HHK8":[{"s_result":"0","error_desc":"执行该接口出错(Cal_Data)SQLException:Column 'column_test' not found."}]}
答:请确认接口返回值是否遗漏定义sql语句或存储过程返回结果集。
.8.7失败:该业务平台对接口调用超过使用期限,期限时间为:2021-04-21 00:00:00;
错误信息:
{"A01_G6HHK8":[{"s_result":"0","error_desc":"该业务平台对接口调用超过使用期限,期限时间为:2021-04-21 00:00:00"}]}
答:请确认该接口综合应用平台权限配置页中使用有效期是否超时限
或
确认该接口平台用户权限配置页中使用有效期是否超时限。
8.8失败:该用户对接口调用超过调用次数,次数限制为10次每日,本日已调用20次;
错误信息:
{"A01_G6HHK8":[{"s_result":"0","error_desc":"该用户对接口调用超过调用次数,次数限制为10次每日,本日已调用20次"}]}
答:请确认该接口综合应用平台权限配置页中是否超过调用次数限制。
或
确认该接口平台用户权限配置页中是否超过调用次数限制。
8.9失败:该接口未定义,或未关联平台与接口权限;
错误信息:
{"A01_G6HHK8":[{"s_result":"0","error_desc":"该接口未定义,或未关联平台与接口权限"}]}
答:请确认该接口综合应用平台权限配置页是否配置
或
确认该接口平台用户权限配置页中是否配置。
8.10失败:失败,Common_Sql_Proc error:A01_MM98RT Query was empty;
错误信息:
{"A01_MM98RT":[{"s_result":"0","error_desc":"失败,data base DB2.Common_Sql_Proc error:A01_MM98RT Query was empty"}]}
答:请确认该存储过程在对应数据库中是否已创建。
8.11失败:用户未登陆,请登陆;
错误信息:
{"A01_TEST":[{"session_id":"","s_result":"0","error_desc":"用户未登陆,请登陆"}]}
答:该接口未传递正确session_id,请传递正确session_id;session_id来源于用户登录接口返回信息。
8.12发送延时参数delay_data=0时显示系统一直卡顿或页面显示结果集数据;
答:请确认delay_code=xxx参数是否同步发送,并且长度为32位。
8.13失败:oracle多实例接口查询失败;
答:请确认是否发送参数param_dbname
8.14失败:oracle库存储过程返回结果集失败;
答:请确认接口输出参数是否定义或定义非cursor类型。
8.15附件上传
/*html代码*/
<form>附件1 <br>
<input id="mfFile" style="WIDTH: 600px" type="file" name="mfFile" />
</form>
/*jquery代码*/
var formData = new FormData(document.querySelector("form")); //获取form值
$.ajax({
url: "https://xx.x.xx.xx/cdi_CenterData/uploadFile",
type: "POST",
data: formData,
processData: false, // 不处理数据
contentType: false, // 不设置内容类型
success: function (input) {
data= $.parseJSON(input).A01_UpLoadFile;
alert(JSON.stringify(data));
}
});
数据流程图:
9.1入参拦截器开发
直接将cdi_CenterData\WEB-INF和 cdi_CenterData\getdata.jsp覆盖到新建工程项目中即可。
按如下格式定义拦截器类:
public class test_in_plugins implements com.zxy.common.ParamName_InterFace
{
public StringBuilder strResult = new StringBuilder();
public String userid = null;
public String session_id = null;
public String param_name = null;
public String param_value1 = null;
/*
public String param_value...
请注意配置对应的get...()和 set...()函数
输入参数请根据接口配置的参定义
*/
@Override
public void init_start()
{
/*这里写你的业务逻辑*/
/*若需要直接返回浏览器数据,请将strResult.append(你的json字符串),否则程序将继续请求数据库数据源数据*/
}
public StringBuilder getStrResult()
{
return strResult;
}
public void setStrResult(StringBuilder strResult)
{
this.strResult = strResult;
}
public String getUserid()
{
return userid;
}
public void setUserid(String userid)
{
this.userid = userid;
}
public String getSession_id()
{
return session_id;
}
public void setSession_id(String session_id)
{
this.session_id = session_id;
}
public String getParam_name()
{
return param_name;
}
public void setParam_name(String param_name)
{
this.param_name = param_name;
}
public String getParam_value1()
{
return param_value1;
}
public void setParam_value1(String param_value1)
{
this.param_value1 = param_value1;
}
}
编译通过之后请参考:5.5接口一键管理,填写
内容(包名.类名)
com.xx.xx.test_in_plugins并重启tomcat
接口返回值格式建议参考如下格式:
{
"你的接口名称": [
{
"字段1": "值1",
"字段2": "值2",
"字段3": "值3"
},
{
"字段1": "值1",
"字段2": "值2",
"字段3": "值3"
}
]
}
9.2出参拦截器开发
按如下格式定义拦截器类:
public class test_in_plugins implements com.zxy.common.ParamName_InterFace
{
public StringBuilder strResult = new StringBuilder();
public String userid = null;
public String session_id = null;
public String param_name = null;
public String param_value1 = null;
/*
public String param_value...
请注意配置对应的get...()和 set...()函数
输入参数请根据接口配置的参定义
*/
@Override
public void init_start()
{
/*这里写你的业务逻辑*/
/*strResult.toString()为数据库中获取的数据集的json格式*/
}
public StringBuilder getStrResult()
{
return strResult;
}
public void setStrResult(StringBuilder strResult)
{
this.strResult = strResult;
}
public String getUserid()
{
return userid;
}
public void setUserid(String userid)
{
this.userid = userid;
}
public String getSession_id()
{
return session_id;
}
public void setSession_id(String session_id)
{
this.session_id = session_id;
}
public String getParam_name()
{
return param_name;
}
public void setParam_name(String param_name)
{
this.param_name = param_name;
}
public String getParam_value1()
{
return param_value1;
}
public void setParam_value1(String param_value1)
{
this.param_value1 = param_value1;
}
}
编译通过之后请参考:5.5接口一键管理,填写
内容(包名.类名) com.xx.xx.test_in_plugins并重启tomcat
根据session_id获取当前登录用户信息:
Object[] objV = com.zxy.common.Com_Para.htSession.get(session_id);
objV[0]为json格式,包含用户信息
ObjV[1]为该用户活动时间
数据库操作:
//调用存储过程
public void use_proc()
{
com.zxy.db1.Db_Common1 db1 = new com.zxy.db1.Db_Common1();
//com.zxy.db2.Db_Common2 db2 = new com.zxy.db2.Db_Common1();访问第二个数据源
//com.zxy.db3.Db_Common3 db3 = new com.zxy.db3.Db_Common1();访问第三个数据源
String ProName = "A01_A47HTG";//存储过程名
String[] Parameters = new String[]{"参数1"}; //参数
String[] ParamTypes = new String[] {"STRING"};//参数类型
String[] ParamOutName = new String[0];
String[] ParamOutType = new String[0];
com.zxy.model.T_PROC_NAME trn = new com.zxy.model.T_PROC_NAME();
trn.INF_TYPE = "1"; //存储过程
trn.INF_EN_SQL = "";
ResultSet rs =
db1.Common_Sql_Proc(ProName,Parameters,ParamTypes,ParamOutName,ParamOutType,trn);
}
//调用sql语句
public void use_sql()
{
com.zxy.db1.Db_Common1 db1 = new com.zxy.db1.Db_Common1();
//com.zxy.db2.Db_Common2 db2 = new com.zxy.db2.Db_Common1();访问第二个数据源
//com.zxy.db3.Db_Common3 db3 = new com.zxy.db3.Db_Common1();访问第三个数据源
String ProName = "A01_TH8342";//SQL语句名称
String[] Parameters = new String[]{"参数1"}; //参数
String[] ParamTypes = new String[] {"STRING"};//参数类型
String[] ParamOutName = new String[0];
String[] ParamOutType = new String[0];
com.zxy.model.T_PROC_NAME trn = new com.zxy.model.T_PROC_NAME();
trn.INF_TYPE = "2"; //Sql语句
trn.INF_EN_SQL = "select .....where sid=?";
//或者trn.INF_EN_SQL = "insert into ....values(?)"
ResultSet rs = db1.Common_Sql_Proc(ProName,Parameters,ParamTypes,ParamOutName,ParamOutType,trn);
try
{
while(rs.next())
{
String strResult = rs.getString("aaaaa");
}
}
catch(SQLException e)
{
com.zxy.adminlog.UsAdmin_Log uL = new com.zxy.adminlog.UsAdmin_Log(Com_Para.ApplicationPath,new StringBuilder("xxx出错[use_sql]\r\n" + e.getMessage()));
try
{
uL.WriteLog();
}
catch(IOException e1)
{
}
}
finally
{
if(rs != null)
{
try
{
rs.getStatement().close();
rs.close();
}
catch(SQLException e)
{
}
}
}
}
写log日志:
com.zxy.adminlog.UsAdmin_Log uL = new com.zxy.adminlog.UsAdmin_Log(Com_Para.ApplicationPath,new StringBuilder("该处写入日志内容"));
try
{
uL.WriteLog();
}
catch(IOException e1)
{
}
浏览器直接打开
路径地址....\cdi_CenterData\cdi_app1\main\login.html文件
js/common.js 通用js
js/template_tag.js 页面模板js
js/TemplateIFaceLink.json 模板数据关联
Timetask定时器插件开发
tcp socket server插件开发
tcp socket client插件开发
Mqtt server插件开发
APP应用页面模板功能开发
其他功能扩展
请咨询技术支持:
技术支持联系方式:QQ(36520783) 微信(13738196011)