This commit is contained in:
2025-02-03 07:27:39 +05:00
parent 6cd3bb5e65
commit bd22e57cbc
4 changed files with 322 additions and 18 deletions

View File

@ -40,7 +40,7 @@ public class TCTableTools {
}
//Напиши функцию: Получить ассоциативный массив название полей таблицы и их тип
public static Map<String, String> getTableSchema(Connection connection, String schemaName, String tableName) {
public static Map<String, String> getTableSchema(Connection connection, String tableName) {
Map<String, String> schemaMap = new HashMap<>();
String query = """
SELECT c.column_name,
@ -56,8 +56,10 @@ public class TCTableTools {
AND c.table_name = ?
""";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, schemaName);
statement.setString(2, tableName);
String schema = Tools.beforeFirst(tableName,".");
String table = Tools.afterLast(tableName,".");
statement.setString(1, schema);
statement.setString(2, table);
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
String columnName = resultSet.getString("column_name");
@ -71,4 +73,73 @@ public class TCTableTools {
return schemaMap;
}
public static String getSQLUpdate(TCTable tbl) {
StringBuilder sql;
sql = new StringBuilder("update " + tbl.name + " set ");
for(int i=0;i<tbl.fields.size();i++)
{
if(tbl.fields.get(i).u_exists){
if(!tbl.fields.get(i).name.equals("uid")) {
sql.append(tbl.fields.get(i).name);
switch (tbl.fields.get(i).type){
case TCField.BD_UTF8_1_UUID:{
sql.append("=main.strtouuid(?),");
break;
}
case TCField.BD_UTF8_4_JSONB:{
sql.append("=?::jsonb,");
break;
}
case TCField.BD_UTF8_1_TIMESTAMP:{
sql.append("=?::timestamp,");
break;
}
default:
sql.append("=?,");
}
}
}
}
sql = new StringBuilder(sql.substring(0, sql.length() - 1));
sql.append(" where uid=main.strtouuid(?)");
return sql.toString();
}
public static String getSQLInsert(TCTable tbl)
{
String sql="insert into "+tbl.name+"(";
StringBuilder subSql1= new StringBuilder(" ");
StringBuilder subSql2= new StringBuilder(" ");
for(int i=0;i<tbl.fields.size();i++)
{
if(tbl.fields.get(i).u_exists){
if(!tbl.fields.get(i).name.equals("uid")) {
subSql1.append(tbl.fields.get(i).name);
subSql1.append(",");
switch (tbl.fields.get(i).type){
case TCField.BD_UTF8_1_UUID:{
subSql2.append("main.strtouuid(?),");
break;
}
case TCField.BD_UTF8_4_JSONB:{
subSql2.append("?::jsonb,");
break;
}
case TCField.BD_UTF8_1_TIMESTAMP:{
subSql2.append("?::timestamp,");
break;
}
default:
subSql2.append("?,");
}
}
}
}
subSql1.append("uid");
subSql2.append("main.strtouuid(?)");
sql+=subSql1+")values("+subSql2+");";
return sql;
}
}