mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-31 19:52:54 +08:00
- Default return alias for returned results [Issue #270](https://github.com/chat2db/Chat2DB/issues/270)
This commit is contained in:
@ -14,6 +14,7 @@ import java.util.stream.Collectors;
|
||||
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
|
||||
import ai.chat2db.spi.model.*;
|
||||
|
||||
import ai.chat2db.spi.util.ResultSetUtils;
|
||||
import cn.hutool.core.date.TimeInterval;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -57,13 +58,14 @@ public class SQLExecutor {
|
||||
|
||||
/**
|
||||
* 执行sql
|
||||
*
|
||||
* @param connection
|
||||
* @param sql
|
||||
* @param function
|
||||
* @return
|
||||
*/
|
||||
|
||||
public <R> R executeSql(Connection connection,String sql, Function<ResultSet, R> function) {
|
||||
public <R> R executeSql(Connection connection, String sql, Function<ResultSet, R> function) {
|
||||
if (StringUtils.isEmpty(sql)) {
|
||||
return null;
|
||||
}
|
||||
@ -115,7 +117,7 @@ public class SQLExecutor {
|
||||
headerList.add(Header.builder()
|
||||
.dataType(ai.chat2db.spi.util.JdbcUtils.resolveDataType(
|
||||
resultSetMetaData.getColumnTypeName(i), resultSetMetaData.getColumnType(i)).getCode())
|
||||
.name(resultSetMetaData.getColumnName(i))
|
||||
.name(ResultSetUtils.getColumnName(resultSetMetaData, i))
|
||||
.build());
|
||||
}
|
||||
|
||||
@ -153,12 +155,13 @@ public class SQLExecutor {
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public ExecuteResult execute(Connection connection,String sql) throws SQLException {
|
||||
public ExecuteResult execute(Connection connection, String sql) throws SQLException {
|
||||
return execute(sql, connection);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有的数据库
|
||||
*
|
||||
* @param connection
|
||||
* @return
|
||||
*/
|
||||
@ -178,12 +181,13 @@ public class SQLExecutor {
|
||||
|
||||
/**
|
||||
* 获取所有的schema
|
||||
*
|
||||
* @param connection
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String, String>> schemas(Connection connection,String databaseName, String schemaName) {
|
||||
public List<Map<String, String>> schemas(Connection connection, String databaseName, String schemaName) {
|
||||
List<Map<String, String>> schemaList = Lists.newArrayList();
|
||||
if (StringUtils.isEmpty(databaseName) && StringUtils.isEmpty(schemaName)) {
|
||||
try (ResultSet resultSet = connection.getMetaData().getSchemas()) {
|
||||
@ -217,6 +221,7 @@ public class SQLExecutor {
|
||||
|
||||
/**
|
||||
* 获取所有的数据库表
|
||||
*
|
||||
* @param connection
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
@ -224,7 +229,8 @@ public class SQLExecutor {
|
||||
* @param types
|
||||
* @return
|
||||
*/
|
||||
public List<Table> tables(Connection connection,String databaseName, String schemaName, String tableName, String types[]) {
|
||||
public List<Table> tables(Connection connection, String databaseName, String schemaName, String tableName,
|
||||
String types[]) {
|
||||
List<Table> tables = Lists.newArrayList();
|
||||
int n = 0;
|
||||
try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, schemaName, tableName,
|
||||
@ -246,6 +252,7 @@ public class SQLExecutor {
|
||||
|
||||
/**
|
||||
* 获取所有的数据库表列
|
||||
*
|
||||
* @param connection
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
@ -253,7 +260,8 @@ public class SQLExecutor {
|
||||
* @param columnName
|
||||
* @return
|
||||
*/
|
||||
public List<TableColumn> columns(Connection connection,String databaseName, String schemaName, String tableName, String columnName) {
|
||||
public List<TableColumn> columns(Connection connection, String databaseName, String schemaName, String tableName,
|
||||
String columnName) {
|
||||
List<TableColumn> tableColumns = Lists.newArrayList();
|
||||
try (ResultSet resultSet = connection.getMetaData().getColumns(databaseName, schemaName, tableName,
|
||||
columnName)) {
|
||||
@ -270,13 +278,14 @@ public class SQLExecutor {
|
||||
|
||||
/**
|
||||
* 获取所有的数据库表索引
|
||||
*
|
||||
* @param connection
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
* @param tableName
|
||||
* @return
|
||||
*/
|
||||
public List<TableIndex> indexes(Connection connection,String databaseName, String schemaName, String tableName) {
|
||||
public List<TableIndex> indexes(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||
List<TableIndex> tableIndices = Lists.newArrayList();
|
||||
try (ResultSet resultSet = connection.getMetaData().getIndexInfo(databaseName, schemaName, tableName,
|
||||
false,
|
||||
@ -308,12 +317,13 @@ public class SQLExecutor {
|
||||
|
||||
/**
|
||||
* 获取所有的函数
|
||||
*
|
||||
* @param connection
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
* @return
|
||||
*/
|
||||
public List<ai.chat2db.spi.model.Function> functions(Connection connection,String databaseName,
|
||||
public List<ai.chat2db.spi.model.Function> functions(Connection connection, String databaseName,
|
||||
String schemaName) {
|
||||
List<ai.chat2db.spi.model.Function> functions = Lists.newArrayList();
|
||||
try (ResultSet resultSet = connection.getMetaData().getFunctions(databaseName, schemaName, null);) {
|
||||
@ -328,12 +338,13 @@ public class SQLExecutor {
|
||||
|
||||
/**
|
||||
* 获取所有的存储过程
|
||||
*
|
||||
* @param connection
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
* @return
|
||||
*/
|
||||
public List<Procedure> procedures(Connection connection,String databaseName, String schemaName) {
|
||||
public List<Procedure> procedures(Connection connection, String databaseName, String schemaName) {
|
||||
List<Procedure> procedures = Lists.newArrayList();
|
||||
try (ResultSet resultSet = connection.getMetaData().getProcedures(databaseName, schemaName, null)) {
|
||||
while (resultSet != null && resultSet.next()) {
|
||||
|
@ -2,6 +2,7 @@
|
||||
package ai.chat2db.spi.util;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import ai.chat2db.spi.model.*;
|
||||
@ -16,12 +17,12 @@ public class ResultSetUtils {
|
||||
ai.chat2db.spi.model.Function function
|
||||
= new ai.chat2db.spi.model.Function();
|
||||
try {
|
||||
function.setDatabaseName(getString(resultSet,"FUNCTION_CAT"));
|
||||
function.setSchemaName(getString(resultSet,"FUNCTION_SCHEM"));
|
||||
function.setFunctionName(getString(resultSet,"FUNCTION_NAME"));
|
||||
function.setRemarks(getString(resultSet,"REMARKS"));
|
||||
function.setDatabaseName(getString(resultSet, "FUNCTION_CAT"));
|
||||
function.setSchemaName(getString(resultSet, "FUNCTION_SCHEM"));
|
||||
function.setFunctionName(getString(resultSet, "FUNCTION_NAME"));
|
||||
function.setRemarks(getString(resultSet, "REMARKS"));
|
||||
function.setFunctionType(resultSet.getShort("FUNCTION_TYPE"));
|
||||
function.setSpecificName(getString(resultSet,"SPECIFIC_NAME"));
|
||||
function.setSpecificName(getString(resultSet, "SPECIFIC_NAME"));
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -31,12 +32,12 @@ public class ResultSetUtils {
|
||||
public static Procedure buildProcedure(ResultSet resultSet) {
|
||||
Procedure procedure = new Procedure();
|
||||
try {
|
||||
procedure.setDatabaseName(getString(resultSet,"PROCEDURE_CAT"));
|
||||
procedure.setSchemaName(getString(resultSet,"PROCEDURE_SCHEM"));
|
||||
procedure.setProcedureName(getString(resultSet,"PROCEDURE_NAME"));
|
||||
procedure.setRemarks(getString(resultSet,"REMARKS"));
|
||||
procedure.setDatabaseName(getString(resultSet, "PROCEDURE_CAT"));
|
||||
procedure.setSchemaName(getString(resultSet, "PROCEDURE_SCHEM"));
|
||||
procedure.setProcedureName(getString(resultSet, "PROCEDURE_NAME"));
|
||||
procedure.setRemarks(getString(resultSet, "REMARKS"));
|
||||
procedure.setProcedureType(resultSet.getShort("PROCEDURE_TYPE"));
|
||||
procedure.setSpecificName(getString(resultSet,"SPECIFIC_NAME"));
|
||||
procedure.setSpecificName(getString(resultSet, "SPECIFIC_NAME"));
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -45,31 +46,31 @@ public class ResultSetUtils {
|
||||
|
||||
public static TableIndexColumn buildTableIndexColumn(ResultSet resultSet) throws SQLException {
|
||||
TableIndexColumn tableIndexColumn = new TableIndexColumn();
|
||||
tableIndexColumn.setColumnName(getString(resultSet,"COLUMN_NAME"));
|
||||
tableIndexColumn.setIndexName(getString(resultSet,"INDEX_NAME"));
|
||||
tableIndexColumn.setAscOrDesc(getString(resultSet,"ASC_OR_DESC"));
|
||||
tableIndexColumn.setColumnName(getString(resultSet, "COLUMN_NAME"));
|
||||
tableIndexColumn.setIndexName(getString(resultSet, "INDEX_NAME"));
|
||||
tableIndexColumn.setAscOrDesc(getString(resultSet, "ASC_OR_DESC"));
|
||||
tableIndexColumn.setCardinality(resultSet.getLong("CARDINALITY"));
|
||||
tableIndexColumn.setPages(resultSet.getLong("PAGES"));
|
||||
tableIndexColumn.setFilterCondition(getString(resultSet,"FILTER_CONDITION"));
|
||||
tableIndexColumn.setIndexQualifier(getString(resultSet,"INDEX_QUALIFIER"));
|
||||
tableIndexColumn.setFilterCondition(getString(resultSet, "FILTER_CONDITION"));
|
||||
tableIndexColumn.setIndexQualifier(getString(resultSet, "INDEX_QUALIFIER"));
|
||||
// tableIndexColumn.setIndexType(resultSet.getShort("TYPE"));
|
||||
tableIndexColumn.setNonUnique(resultSet.getBoolean("NON_UNIQUE"));
|
||||
tableIndexColumn.setOrdinalPosition(resultSet.getShort("ORDINAL_POSITION"));
|
||||
tableIndexColumn.setDatabaseName(getString(resultSet,"TABLE_CAT"));
|
||||
tableIndexColumn.setSchemaName(getString(resultSet,"TABLE_SCHEM"));
|
||||
tableIndexColumn.setTableName(getString(resultSet,"TABLE_NAME"));
|
||||
tableIndexColumn.setDatabaseName(getString(resultSet, "TABLE_CAT"));
|
||||
tableIndexColumn.setSchemaName(getString(resultSet, "TABLE_SCHEM"));
|
||||
tableIndexColumn.setTableName(getString(resultSet, "TABLE_NAME"));
|
||||
return tableIndexColumn;
|
||||
}
|
||||
|
||||
public static TableColumn buildColumn(ResultSet resultSet) throws SQLException {
|
||||
TableColumn tableColumn = new TableColumn();
|
||||
tableColumn.setDatabaseName(getString(resultSet,"TABLE_CAT"));
|
||||
tableColumn.setSchemaName(getString(resultSet,"TABLE_SCHEM"));
|
||||
tableColumn.setTableName(getString(resultSet,"TABLE_NAME"));
|
||||
tableColumn.setName(getString(resultSet,"COLUMN_NAME"));
|
||||
tableColumn.setComment(getString(resultSet,"REMARKS"));
|
||||
tableColumn.setDefaultValue(getString(resultSet,"COLUMN_DEF"));
|
||||
tableColumn.setTypeName(getString(resultSet,"TYPE_NAME"));
|
||||
tableColumn.setDatabaseName(getString(resultSet, "TABLE_CAT"));
|
||||
tableColumn.setSchemaName(getString(resultSet, "TABLE_SCHEM"));
|
||||
tableColumn.setTableName(getString(resultSet, "TABLE_NAME"));
|
||||
tableColumn.setName(getString(resultSet, "COLUMN_NAME"));
|
||||
tableColumn.setComment(getString(resultSet, "REMARKS"));
|
||||
tableColumn.setDefaultValue(getString(resultSet, "COLUMN_DEF"));
|
||||
tableColumn.setTypeName(getString(resultSet, "TYPE_NAME"));
|
||||
tableColumn.setColumnSize(resultSet.getInt("COLUMN_SIZE"));
|
||||
tableColumn.setDataType(resultSet.getInt("DATA_TYPE"));
|
||||
tableColumn.setNullable(resultSet.getInt("NULLABLE") == 1);
|
||||
@ -85,22 +86,30 @@ public class ResultSetUtils {
|
||||
|
||||
public static Table buildTable(ResultSet resultSet) throws SQLException {
|
||||
Table table = new Table();
|
||||
table.setName(getString(resultSet,"TABLE_NAME"));
|
||||
table.setComment(getString(resultSet,"REMARKS"));
|
||||
table.setDatabaseName(getString(resultSet,"TABLE_CAT"));
|
||||
table.setSchemaName(getString(resultSet,"TABLE_SCHEM"));
|
||||
table.setType(getString(resultSet,"TABLE_TYPE"));
|
||||
table.setName(getString(resultSet, "TABLE_NAME"));
|
||||
table.setComment(getString(resultSet, "REMARKS"));
|
||||
table.setDatabaseName(getString(resultSet, "TABLE_CAT"));
|
||||
table.setSchemaName(getString(resultSet, "TABLE_SCHEM"));
|
||||
table.setType(getString(resultSet, "TABLE_TYPE"));
|
||||
return table;
|
||||
}
|
||||
|
||||
private static String getString(ResultSet resultSet,String name){
|
||||
if(resultSet == null){
|
||||
private static String getString(ResultSet resultSet, String name) {
|
||||
if (resultSet == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return resultSet.getString(name);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getColumnName(ResultSetMetaData resultSetMetaData, int column) throws SQLException {
|
||||
String columnLabel = resultSetMetaData.getColumnLabel(column);
|
||||
if (columnLabel != null) {
|
||||
return columnLabel;
|
||||
}
|
||||
return resultSetMetaData.getColumnName(column);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user