|
|
@@ -1,6 +1,7 @@
|
|
|
package com.usoftchina.bi.server.service.dataSource;
|
|
|
|
|
|
import com.usoftchina.bi.core.exception.MyException;
|
|
|
+import com.usoftchina.bi.core.jdbc.DynamicDataSource;
|
|
|
import com.usoftchina.bi.core.jdbc.DynamicDataSourceContextHolder;
|
|
|
import com.usoftchina.bi.server.dao.dataSource.DataColumnMapper;
|
|
|
import com.usoftchina.bi.server.dao.dataSource.DataConnectorMapper;
|
|
|
@@ -39,16 +40,25 @@ public class ImplementSqlService {
|
|
|
checkSql.contains("drop") || checkSql.contains("create") || checkSql.contains("comment")){
|
|
|
return new RepEntity(RepCode.SqlWarn);
|
|
|
}
|
|
|
+ String databaseType = dataConnectorMapper.getDatabases(toSql.getId()).getDatabaseType();
|
|
|
String sqlStr = "select * from (" + toSql.getStrSql() + ") where rownum <=1";
|
|
|
+ if ("mysql".equals(databaseType)) {
|
|
|
+ sqlStr = "select * from (" + toSql.getStrSql() + ") tmp limit 0,1";
|
|
|
+ } else if("sqlServer".equals(databaseType)) {
|
|
|
+ sqlStr = "select top 1 * from (" + toSql.getStrSql() + ") tmp";
|
|
|
+ }
|
|
|
if ("".equals(sqlStr) || sqlStr == null) {
|
|
|
return new RepEntity(RepCode.ChartsNameNull);
|
|
|
}
|
|
|
|
|
|
SqlRowSet sqlRowSet = null;
|
|
|
try {
|
|
|
+ DynamicDataSourceContextHolder.setDataSourceType(toSql.getId());
|
|
|
sqlRowSet = jdbcTemplate.queryForRowSet(sqlStr);
|
|
|
} catch (DataAccessException e) {
|
|
|
throw new MyException(e.getCause().getMessage());
|
|
|
+ } finally {
|
|
|
+ DynamicDataSourceContextHolder.clearDataSourceType();
|
|
|
}
|
|
|
SqlRowSetMetaData metaData = sqlRowSet.getMetaData();
|
|
|
int length = metaData.getColumnCount();
|
|
|
@@ -130,9 +140,16 @@ public class ImplementSqlService {
|
|
|
}else {
|
|
|
password = pw;
|
|
|
}
|
|
|
-
|
|
|
- String url = "jdbc:oracle:thin:@" + databases.getAddrass() + ":" + databases.getPort() + ":" + databases
|
|
|
- .getDataName();
|
|
|
+ String url = "";
|
|
|
+ if ("oracle".equals(databases.getDatabaseType())) {
|
|
|
+ url = String.format("jdbc:oracle:thin:@%s:%s:%s", databases.getAddrass(), databases.getPort(), databases.getDataName());
|
|
|
+ }else if ("mysql".equals(databases.getDatabaseType())) {
|
|
|
+ url = String.format("jdbc:mysql://%s:%s/%s?characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC", databases.getAddrass(), databases.getPort(), databases.getDataName());
|
|
|
+ }else if("sqlServer".equals(databases.getDatabaseType())) {
|
|
|
+ url = String.format("jdbc:sqlserver://%s:%s;DatabaseName=%s", databases.getAddrass(), databases.getPort(), databases.getDataName());
|
|
|
+ }else {
|
|
|
+ throw new MyException("不支持的数据库类型");
|
|
|
+ }
|
|
|
String username = databases.getUserName();
|
|
|
Connection con = null;
|
|
|
try {
|