Я работаю над некоторым программным обеспечением, которое должно временно создавать фиктивные записи в различных базах данных (Oracle, DB2, SQLServer). Каждый столбец в строке заполнен случайными данными.
Код использует класс java.sql.DataBaseMetaData в java, чтобы получить атрибут COLUMN_SIZE, чтобы выяснить, какой большой размер случайной строки хранить в VARCHAR2 и других типах столбцов строки.
DatabaseMetaData metadata = connection.getMetaData();
while (resultSet.next()) {
ResultSet resultSet = metadata.getColumns(...);
int size = resultSet.getInt("COLUMN_SIZE");
}
Проблема, по крайней мере, в Oracle, я не могу понять, возвращается ли длина столбца в байтах или символах. Также, в зависимости от кодировки, символы имеют различное количество байтов. Объедините все это, и я получаю некоторые ошибки SQL, потому что строки, которые пытаются вставить, слишком велики. Я что-то упускаю из виду?