Первый

This commit is contained in:
2024-11-18 22:17:38 +05:00
commit 6cd3bb5e65
12 changed files with 4118 additions and 0 deletions

74
tctable/TCTableTools.java Normal file
View 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;
}
}