Enum odbc_api::DataType [−][src]
pub enum DataType {
Show 23 variants
Unknown,
Char {
length: usize,
},
WChar {
length: usize,
},
Numeric {
precision: usize,
scale: i16,
},
Decimal {
precision: usize,
scale: i16,
},
Integer,
SmallInt,
Float {
precision: usize,
},
Real,
Double,
Varchar {
length: usize,
},
WVarchar {
length: usize,
},
LongVarchar {
length: usize,
},
LongVarbinary {
length: usize,
},
Date,
Time {
precision: i16,
},
Timestamp {
precision: i16,
},
BigInt,
TinyInt,
Bit,
Varbinary {
length: usize,
},
Binary {
length: usize,
},
Other {
data_type: SqlDataType,
column_size: usize,
decimal_digits: i16,
},
}
Expand description
Enumeration over valid SQL Data Types supported by ODBC
Variants
The type is not known.
Char(n)
. Character string of fixed length.
Fields of Char
length: usize
Column size in characters (excluding terminating zero).
NChar(n)
. Character string of fixed length.
Fields of WChar
length: usize
Column size in characters (excluding terminating zero).
`Numeric(p,s). Signed, exact, numeric value with a precision p and scale s (1 <= p <= 15; s <= p)
Decimal(p,s)
. Signed, exact, numeric value with a precision of at least p and scale s.
The maximum precision is driver-defined. (1 <= p <= 15; s <= p)
Integer
. 32 Bit Integer
Smallint
. 16 Bit Integer
Float(p)
. Signed, approximate, numeric value with a binary precision of at least p. The
maximum precision is driver-defined.
Depending on the implementation binary precision is either 24 (f32
) or 53 (f64
).
Fields of Float
precision: usize
Real
. Signed, approximate, numeric value with a binary precision 24 (zero or absolute
value 10^-38] to 10^38).
Double Precision
. Signed, approximate, numeric value with a binary precision 53 (zero or
absolute value 10^-308 to 10^308).
Varchar(n)
. Variable length character string.
Fields of Varchar
length: usize
Maximum length of the character string (excluding terminating zero).
NVARCHAR(n)
. Variable length character string. Indicates the use of wide character strings
and use of UCS2 encoding on the side of the database.
Fields of WVarchar
length: usize
Maximum length of the character string (excluding terminating zero).
TEXT
. Variable length characeter string for long text objects.
Fields of LongVarchar
length: usize
Maximum length of the character string (excluding terminating zero). Maximum size depends on the capabilities of the driver and datasource. E.g. its 2^31 - 1 for MSSQL.
BLOB
. Variable length data for long binary objects.
Fields of LongVarbinary
length: usize
Maximum length of the binary data. Maximum size depends on the capabilities of the driver and datasource.
Date
. Year, month, and day fields, conforming to the rules of the Gregorian calendar.
Time
. Hour, minute, and second fields, with valid values for hours of 00 to 23, valid
values for minutes of 00 to 59, and valid values for seconds of 00 to 61. Precision p
indicates the seconds precision.
Fields of Time
precision: i16
Number of radix ten digits used to represent the timestamp after the decimal points. E.g. Milliseconds would be represented by precision 3, Microseconds by 6 and Nanoseconds by 9.
Timestamp
. Year, month, day, hour, minute, and second fields, with valid values as
defined for the Date and Time variants.
Fields of Timestamp
precision: i16
Number of radix ten digits used to represent the timestamp after the decimal points. E.g. Milliseconds would be represented by precision 3, Microseconds by 6 and Nanoseconds by 9.
BIGINT
. Exact numeric value with precision 19 (if signed) or 20 (if unsigned) and scale 0
(signed: -2^63 <= n <= 2^63 - 1, unsigned: 0 <= n <= 2^64 - 1). Has no corresponding
type in SQL-92.
TINYINT
. Exact numeric value with precision 3 and scale 0 (signed: -128 <= n <= 127,
unsigned: 0 <= n <= 255)
BIT
. Single bit binary data.
VARBINARY(n)
. Type for variable sized binary data.
Fields of Varbinary
length: usize
BINARY(n)
. Type for fixed sized binary data.
Fields of Binary
length: usize
The driver returned a type, but it is not among the other types of these enumeration. This is a catchall, in case the library is incomplete, or the data source supports custom or non-standard types.
Fields of Other
data_type: SqlDataType
Type of the column
column_size: usize
Size of column element
decimal_digits: i16
Decimal digits returned for the column element. Exact meaning if any depends on the
data_type
field.
Implementations
This constructor is useful to create an instance of the enumeration using values returned by
ODBC Api calls like SQLDescribeCol
, rather than just initializing a variant directly.
The associated data_type
discriminator for this variant.
Return the column size, as it is required to bind the data type as a parameter. This implies
Return the number of decimal digits as required to bind the data type as a parameter.
The maximum number of characters needed to display data in character form.
See: https://docs.microsoft.com/en-us/sql/odbc/reference/appendixes/display-size
The maximum length of the UTF-8 representation in bytes.
use odbc_api::DataType;
// Character set data types length is multiplied by four.
assert_eq!(DataType::Varchar { length: 10 }.utf8_len(), Some(40));
assert_eq!(DataType::Char { length: 10 }.utf8_len(), Some(40));
assert_eq!(DataType::WVarchar { length: 10 }.utf8_len(), Some(40));
assert_eq!(DataType::WChar { length: 10 }.utf8_len(), Some(40));
// For other types return value is identical to display size as they are assumed to be
// entirely representable with ASCII characters.
assert_eq!(DataType::Numeric { precision: 10, scale: 3}.utf8_len(), Some(10 + 2));
The maximum length of the UTF-16 representation in 2-Byte characters.
use odbc_api::DataType;
// Character set data types length is multiplied by two.
assert_eq!(DataType::Varchar { length: 10 }.utf16_len(), Some(20));
assert_eq!(DataType::Char { length: 10 }.utf16_len(), Some(20));
assert_eq!(DataType::WVarchar { length: 10 }.utf16_len(), Some(20));
assert_eq!(DataType::WChar { length: 10 }.utf16_len(), Some(20));
// For other types return value is identical to display size as they are assumed to be
// entirely representable with ASCII characters.
assert_eq!(DataType::Numeric { precision: 10, scale: 3}.utf16_len(), Some(10 + 2));
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for DataType
impl UnwindSafe for DataType
Blanket Implementations
Mutably borrows from an owned value. Read more