Förstå skillnader mellan datatyper

Ladda ned JDBC-drivrutin

Det finns ett antal skillnader mellan datatyperna java-programmeringsspråk och SQL Server-datatyper. Microsoft JDBC-drivrutinen för SQL Server hjälper till att underlätta dessa skillnader genom olika typer av konverteringar.

Teckentyper

Datatyperna för JDBC-teckensträngen är CHAR, VARCHAR och LONGVARCHAR. JDBC-drivrutinen har stöd för JDBC 4.0-API:et. I JDBC 4.0 kan JDBC-teckensträngens datatyper också vara NCHAR, NVARCHAR och LONGNVARCHAR. Dessa nya teckensträngstyper underhåller inbyggda Java-teckentyper i Unicode-format och tar bort behovet av att utföra ansi-till-Unicode- eller Unicode-till-ANSI-konvertering.

Typ Description
Fast längd Datatyperna SQL Server char och nchar mappas direkt till JDBC CHAR - och NCHAR-typerna . Det här är typer med fast längd med utfyllnad som tillhandahålls av servern om kolumnen har SET ANSI_PADDING ON. Utfyllnad är alltid aktiverat för nchar, men för tecken, i det fall där kolumnerna för servertecken inte är vadderade, lägger JDBC-drivrutinen till utfyllnad.
Variabel längd SQL Server varchar och nvarchar typerna mappas direkt till JDBC VARCHAR och NVARCHAR typerna.
Long SQL Server text och ntext -typerna mappas till JDBC-typen LONGVARCHAR respektive LONGNVARCHAR. Det här är inaktuella typer som börjar i SQL Server 2005 (9.x), så du bör använda stora värdetyper, varchar(max) eller nvarchar(max) i stället.

Med hjälp av metoderna Uppdatera<numerisk typ> och updateObject (int, java.lang.Object) misslyckas de mot text - och ntextserverkolumner . Men att använda metoden setObject med en angiven teckenkonverteringstyp stöds mot text och ntext serverkolumner.

Binära strängtyper

De binära JDBC-strängtyperna är BINARY, VARBINARY och LONGVARBINARY.

Typ Description
Fixerad längd SQL Server-typen binary mappar direkt till JDBC-typen BINARY. Det här är en typ av fast längd med utfyllnad som tillhandahålls av servern om kolumnen har SET ANSI_PADDING ON. När teckenkolumnerna på servern inte är utfyllda lägger JDBC-drivrutinen till vaddering.

SQL Server-timestamp-typen är en JDBC BINARY-typ med fast längd på 8 byte.
Variabel längd SQL Server-typen varbinary mappar till JDBC-typen VARBINARY.

udt-typen i SQL Server motsvarar en VARBINARY-typ i JDBC.
Long SQL Server image-typen mappar till JDBC LONGVARBINARY-typen. Den här typen är inaktuell från och med SQL Server 2005 (9.x), så du bör använda en stor värdetyp, varbinary(max) i stället.

Exakta numeriska typer

JDBC:s exakta numeriska typer mappas direkt till motsvarande SQL Server-typer.

Typ Description
BIT JDBC BIT-typen representerar en enda bit som kan vara 0 eller 1. Detta mappar till en SQL Server bittyp.
tinyint JDBC TINYINT-typen representerar en enda byte. Detta mappar till en SQL Server tinyint-typ .
SMALLINT JDBC SMALLINT-typen representerar ett signerat 16-bitars heltal. Detta mappar till en SQL Server-typen smallint.
INTEGER JDBC-INTEGER-typen representerar ett signerat 32-bitars heltal. Detta mappar till en SQL Server int-typ.
BIGINT JDBC BIGINT-typen representerar ett signerat 64-bitars heltal. Detta motsvarar en SQL Server bigint-typ.
NUMERISK JDBC NUMERIC-typen representerar ett decimalvärde med fast precision som innehåller värden med identisk precision. Numerisk typ mappar till den numeriska SQL Server-typen.
DECIMAL JDBC DECIMAL-typen representerar ett decimalvärde med fast precision som innehåller värden med minst den angivna precisionen. DECIMAL-typen mappar till SQL Server-decimaltypen.

JDBC DECIMAL-typen mappar även till SQL Server money-typen och smallmoney-typen, som är specifika decimaltyper med fast precision som lagras i 8 respektive 4 byte.

Ungefärliga numeriska typer

De ungefärliga numeriska JDBC-typerna är REAL, DOUBLE och FLOAT.

Typ Description
Äkta JDBC-typen REAL har sju siffrors precision (enkel precision) och motsvarar direkt SQL Server-typen real.
Dubbel JDBC DOUBLE-typen har 15 siffror med precision (dubbel precision) och mappar till SQL Server float-typen. JDBC FLOAT-typen är synonym med DOUBLE. Eftersom det kan uppstå förvirring mellan FLOAT och DOUBLE är DOUBLE att föredra.

Datum- och tidstyper

JDBC TIMESTAMP-typen motsvarar SQL Server datetime och smalldatetime-typerna. Datetime-typen lagras i två heltal med 4 byte. Smalldatetime-typen innehåller samma information (datum och tid), men med mindre noggrannhet, i två småheltal på 2 byte.

Anmärkning

SQL Server-tidsstämpeltypen är en binärsträngstyp med fast längd. Den mappas inte till någon av JDBC-tidstyperna: DATE, TIME eller TIMESTAMP.

Mappning av anpassad typ

Den anpassade typmappningsfunktionen i JDBC som använder SQLData-gränssnitten för JDBC-avancerade typer (UDT, Struct och så vidare). implementeras inte i JDBC-drivrutinen.

Se även

Förstå JDBC-drivrutinsdatatyperna