Первый
This commit is contained in:
74
tctable/TCTableTools.java
Normal file
74
tctable/TCTableTools.java
Normal file
@ -0,0 +1,74 @@
|
||||
package tctable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.sql.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
//В андроид не используется данный класс
|
||||
public class TCTableTools {
|
||||
|
||||
//Записать таблицу в OutputStream
|
||||
public static boolean getTCTableFromResultSet(String name, int id, ResultSet rs, OutputStream os){
|
||||
TCTable tbl=new TCTable(name,id);
|
||||
try {
|
||||
ResultSetMetaData rsmd = rs.getMetaData();
|
||||
for(int i=1;i<=rsmd.getColumnCount();i++)
|
||||
{
|
||||
TCField field = new TCField(rsmd.getColumnName(i), rsmd.getColumnTypeName(i));
|
||||
tbl.addField(field);
|
||||
}
|
||||
tbl.getHeader(os);
|
||||
while (rs.next())
|
||||
{
|
||||
for(int i=1;i<=rsmd.getColumnCount();i++)
|
||||
{
|
||||
if(rsmd.getColumnTypeName(i).equals("geometry")) { //Геометрию не сохраняю пока не знаю как лучьше сохранять
|
||||
tbl.fields.get(i - 1).setValue(null);
|
||||
}else {
|
||||
tbl.fields.get(i - 1).setValue(rs.getString(i));
|
||||
}
|
||||
}
|
||||
tbl.getCol(os);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//Напиши функцию: Получить ассоциативный массив название полей таблицы и их тип
|
||||
public static Map<String, String> getTableSchema(Connection connection, String schemaName, String tableName) {
|
||||
Map<String, String> schemaMap = new HashMap<>();
|
||||
String query = """
|
||||
SELECT c.column_name,
|
||||
CASE
|
||||
WHEN t.typtype = 'e' THEN 'enum'
|
||||
WHEN t.typname = 'USER-DEFINED' THEN
|
||||
(SELECT pt.typname FROM pg_type pt WHERE pt.oid = c.udt_name::regtype::oid)
|
||||
ELSE t.typname
|
||||
END as data_type
|
||||
FROM information_schema.columns c
|
||||
JOIN pg_type t ON c.udt_name = t.typname
|
||||
WHERE c.table_schema = ?
|
||||
AND c.table_name = ?
|
||||
""";
|
||||
try (PreparedStatement statement = connection.prepareStatement(query)) {
|
||||
statement.setString(1, schemaName);
|
||||
statement.setString(2, tableName);
|
||||
try (ResultSet resultSet = statement.executeQuery()) {
|
||||
while (resultSet.next()) {
|
||||
String columnName = resultSet.getString("column_name");
|
||||
String columnType = resultSet.getString("data_type");
|
||||
schemaMap.put(columnName, columnType);
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return schemaMap;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user