如何从 java jdbc 中的结果集中获取列的大小(以字节为单位)?
How can I get size in bytes of a column from result set in java jdbc?
ResultSet res
ResultSetMetaData rsmds= res.getMetaData();
int size = rsmds.getColumnDisplaySize(i);
给出一列的宽度,我想得到一列的大小(以字节为单位)。我该怎么做?
查询结果集:
SELECT * FROM LevelOne ORDER BY (SELECT NULL) OFFSET 0 ROWS FETCH NEXT 50000 ROWS ONLY;
创建table查询:
CREATE TABLE Q_680_6([Id] INT, [Title] NVARCHAR(MAX) DEFAULT '', [Description] VARCHAR(MAX) Dta_db.dbo.Q_680_6([Id] INT, [Title] NVARCHAR(MAX) DEFAULT '', [Description] VARCHAR(MAX) DEFAULT '', [StartDate] DATETIME DEFAULT NULL, [EndDate] DATETIME DEFAULT NULL, [Lead] NVARCHAR(MAX) DEFAULT '', [CreatedOn] DATETIME DEFAULT NULL, [CreatedBy] INT, [ModifiedOn] DATETIME DEFAULT NULL, [ModifiedBy] INT) END
getColumnDisplaySize
是关于结果集的。这与列规范无关。
您可能会发现 this 相关讨论很有用。
您不能从结果集元数据中得出它。您可以使用 DatabaseMetaData.getColumns(...)
、列 CHAR_OCTET_LENGTH
,但对于 char
/varchar
.
以外的数据类型,这可能不会填充
ResultSet res
ResultSetMetaData rsmds= res.getMetaData();
int size = rsmds.getColumnDisplaySize(i);
给出一列的宽度,我想得到一列的大小(以字节为单位)。我该怎么做?
查询结果集:
SELECT * FROM LevelOne ORDER BY (SELECT NULL) OFFSET 0 ROWS FETCH NEXT 50000 ROWS ONLY;
创建table查询:
CREATE TABLE Q_680_6([Id] INT, [Title] NVARCHAR(MAX) DEFAULT '', [Description] VARCHAR(MAX) Dta_db.dbo.Q_680_6([Id] INT, [Title] NVARCHAR(MAX) DEFAULT '', [Description] VARCHAR(MAX) DEFAULT '', [StartDate] DATETIME DEFAULT NULL, [EndDate] DATETIME DEFAULT NULL, [Lead] NVARCHAR(MAX) DEFAULT '', [CreatedOn] DATETIME DEFAULT NULL, [CreatedBy] INT, [ModifiedOn] DATETIME DEFAULT NULL, [ModifiedBy] INT) END
getColumnDisplaySize
是关于结果集的。这与列规范无关。
您可能会发现 this 相关讨论很有用。
您不能从结果集元数据中得出它。您可以使用 DatabaseMetaData.getColumns(...)
、列 CHAR_OCTET_LENGTH
,但对于 char
/varchar
.