获取pg列时按ordinal排序
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user