获取pg列时按ordinal排序

This commit is contained in:
2023-03-17 14:46:22 +08:00
parent 754ff29209
commit 33a5bf0766
2 changed files with 32 additions and 5 deletions

View File

@@ -4,7 +4,7 @@
"DBName": "tnb_bas",
"DBType": "PostgreSQL", //MySql;SqlServer;Oracle;PostgreSQL;Dm;Kdbndp;Sqlite;
"Host": "localhost",
"Port": "9202",
"Port": "5432",
"UserName": "totong",
"Password": "IPANyxGSKxIXg0dBM",
//SqlServer
@@ -17,7 +17,7 @@
//"DefaultConnection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.19)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=JNPFCLOUD)));User Id=JNPFCLOUD;Password=JNPFCLOUD"
//PostgreSQL
//"DefaultConnection": "PORT=5432;DATABASE=java_boot_dev_postgresql;HOST=192.168.0.103;PASSWORD=123456;USER ID=postgres"
"DefaultConnection": "server=localhost;port=9202;database=tnb_bas;uid=totong;pwd=IPANyxGSKxIXg0dBM;pooling=true;"
"DefaultConnection": "server=localhost;port=5432;database=tnb_bas;uid=totong;pwd=IPANyxGSKxIXg0dBM;pooling=true;"
//MySql
//"DefaultConnection": "server=192.168.0.10;Database=netcore_test;Uid=netcore_test;Pwd=jhpGB3A88CF57fBC;AllowLoadLocalInfile=true"
}

View File

@@ -361,8 +361,34 @@ public class DataBaseManager : IDataBaseManager, ITransient
{
if (link != null && _sqlSugarClient.CurrentConnectionConfig.ConfigId != link.Id) _sqlSugarClient = ChangeDataBase(link);
var list = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false);
return list.Adapt<List<DbTableFieldModel>>();
List<DbTableFieldModel> list;
if (link.DbType == SqlSugar.DbType.PostgreSQL.ToString())
{
var sql = @"SELECT pcolumn.table_name AS tableName,pcolumn.column_name AS field,pcolumn.udt_name AS dataType,
pcolumn.column_default as defaults,col_description(pclass.oid, pcolumn.ordinal_position) AS fieldName,
CASE WHEN pcolumn.numeric_scale>0 THEN pcolumn.numeric_precision ELSE COALESCE(pcolumn.character_maximum_length,0) END AS dataLength,
CASE WHEN pcolumn.is_nullable = 'YES' THEN 1 ELSE 0 END AS allowNull,
CASE WHEN pcolumn.column_default LIKE 'nextval%' THEN true ELSE false END AS identity,
CASE WHEN pkey.colname = pcolumn.column_name THEN true ELSE false END AS primaryKey
FROM information_schema.columns pcolumn
INNER JOIN pg_class pclass ON pcolumn.table_name = pclass.relname
LEFT JOIN (
SELECT pg_class.relname,pg_attribute.attname AS colname FROM
pg_constraint INNER JOIN pg_class
ON pg_constraint.conrelid = pg_class.oid
INNER JOIN pg_attribute ON pg_attribute.attrelid = pg_class.oid
and pg_attribute.attnum = pg_constraint.conkey[1]
INNER JOIN pg_type ON pg_type.oid = pg_attribute.atttypid
where pg_constraint.contype='p'
) pkey ON pcolumn.table_name = pkey.relname
WHERE pcolumn.table_name='{0}' ORDER BY ordinal_position";
list = _sqlSugarClient.SqlQueryable<DbTableFieldModel>(string.Format(sql, tableName)).ToList();
}
else
{
list = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt<List<DbTableFieldModel>>();
}
return list;
}
/// <summary>
@@ -435,7 +461,8 @@ public class DataBaseManager : IDataBaseManager, ITransient
var data = new DatabaseTableInfoOutput()
{
tableInfo = _sqlSugarClient.DbMaintenance.GetTableInfoList(false).Find(m => m.Name == tableName).Adapt<TableInfoOutput>(),
tableFieldList = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt<List<TableFieldOutput>>()
tableFieldList = GetFieldList(link, tableName).Adapt<List<TableFieldOutput>>()
//tableFieldList = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt<List<TableFieldOutput>>()
};
data.tableFieldList = ViewDataTypeConversion(data.tableFieldList, _sqlSugarClient.CurrentConnectionConfig.DbType);