Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menyediakan informasi tentang jenis dan jenis anggota berikut, terkait dengan tanggal dan peningkatan waktu OLE DB.
Struktur DBBINDING
ICommandWithParameters::GetParameterInfoICommandWithParameters::SetParameterInfoIColumnsRowset::GetColumnsRowsetIColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
Informasi berikut dikembalikan dalam struktur DBPARAMINFO melalui prgParamInfo:
| Jenis Parameter | wType | ulParamSize | bPresisi | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| tanggal | DBTYPE_DBDATE | 6 | 10 | 0 | Jelas |
| waktu | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Menetapkan |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Jelas |
| Tanggal dan waktu | DBTYPE_DBTIMESTAMP | 16 | Dua puluh tiga | 3 | Jelas |
| tanggalwaktu2 | DBTYPE_DBTIMESTAMP | 16 | 19,21..27 | 0..7 | Menetapkan |
| datetimeoffset (pergeseran tanggal dan waktu) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26,28..34 | 0..7 | Menetapkan |
Perhatikan bahwa dalam beberapa kasus rentang nilai tidak berkelanjutan. Hal ini disebabkan oleh penambahan titik desimal ketika presisi pecahan lebih besar dari nol.
DBPARAMFLAGS_SS_ISVARIABLESCALE hanya valid saat tersambung ke server SQL Server 2008 (atau yang lebih baru). DBPARAMFLAGS_SS_ISVARIABLESCALE tidak pernah diatur saat tersambung ke server tingkat bawah.
ICommandWithParameters::SetParameterInfo dan Jenis Parameter Tersirat
Informasi yang diberikan dalam struktur DBPARAMBINDINFO harus sesuai dengan yang berikut:
|
pwszDataSourceType (khusus penyedia) |
pwszDataSourceType (OLE DB generik) |
ulParamSize | bScale |
|---|---|---|---|
| DBTYPE_DATE | 6 | Diabaikan | |
| tanggal | DBTYPE_DBDATE | 6 | Diabaikan |
| DBTYPE_DBTIME | 10 | Diabaikan | |
| waktu | DBTYPE_DBTIME2 | 10 | 0..7 |
| smalldatetime | 16 | Diabaikan | |
| Tanggal dan waktu | 16 | Diabaikan | |
| datetime2 atau DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
| datetimeoffset (pergeseran tanggal dan waktu) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Parameter bPrecision diabaikan.
"DBPARAMFLAGS_SS_ISVARIABLESCALE" diabaikan saat mengirim data ke server. Aplikasi dapat memaksa penggunaan jenis aliran data tabular (TDS) warisan dengan menggunakan nama jenis khusus penyedia "datetime" dan "smalldatetime". Ketika terhubung ke server SQL Server 2008 (atau yang lebih baru), format "datetime2" akan digunakan dan konversi server implisit akan terjadi, jika perlu, ketika nama jenis adalah "datetime2" atau "DBTYPE_DBTIMESTAMP".
bScale diabaikan jika nama jenis spesifik penyedia "datetime" atau "smalldatetime" digunakan. Jika tidak, appication harus memastikan bahwa bScale diatur dengan benar. Aplikasi yang ditingkatkan dari MDAC dan SQL Server Native Client dari SQL Server 2005 yang menggunakan "DBTYPE_DBTIMESTAMP" akan gagal jika mereka tidak mengatur bScale dengan benar. Ketika terhubung ke instans server yang lebih lama dari SQL Server 2008, nilai bScale selain 0 atau 3 dengan "DBTYPE_DBTIMESTAMP" adalah kesalahan dan E_FAIL akan dikembalikan.
Ketika ICommandWithParameters::SetParameterInfo tidak dipanggil, penyedia menyiratkan jenis server dari jenis pengikatan seperti yang ditentukan dalam IAccessor::CreateAccessor sebagai berikut:
| Jenis Pengikatan Data |
pwszDataSourceType (khusus penyedia) |
|---|---|
| DBTYPE_DATE | datetime2(0) |
| DBTYPE_DBDATE | tanggal |
| DBTYPE_DBTIME | time(0) |
| DBTYPE_DBTIME2 | time(7) |
| DBTYPE_DBTIMESTAMP | datetime2(7) |
| DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset mengembalikan kolom berikut:
| Tipe Kolom | DBCOLUMN_TYPE | DBCOLUM_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| tanggal | DBTYPE_DBDATE | 6 | 10 | 0 | Jelas |
| waktu | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Menetapkan |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Jelas |
| Tanggal dan waktu | DBTYPE_DBTIMESTAMP | 16 | Dua puluh tiga | 3 | Jelas |
| tanggalwaktu2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Menetapkan |
| datetimeoffset (pergeseran tanggal dan waktu) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Menetapkan |
Dalam DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH selalu benar untuk jenis tanggal/waktu dan bendera berikut selalu salah:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Bendera yang tersisa (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE, dan DBCOLUMNFLAGS_WRITEUNKNOWN) dapat diatur, tergantung pada bagaimana kolom ditentukan dan kueri aktual.
Bendera baru DBCOLUMNFLAGS_SS_ISVARIABLESCALE disediakan di DBCOLUMN_FLAGS untuk memungkinkan aplikasi menentukan jenis kolom server, di mana DBCOLUMN_TYPE DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE atau DBCOLUMN_DATETIMEPRECISION juga harus digunakan untuk mengidentifikasi jenis server.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE hanya valid saat tersambung ke server SQL Server 2008 (atau yang lebih baru). DBCOLUMNFLAGS_SS_ISVARIABLESCALE tidak terdefinisi saat tersambung ke server tingkat bawah.
IColumnsInfo::GetColumnInfo
Struktur DBCOLUMNINFO mengembalikan informasi berikut:
| Jenis Parameter | wType | ulColumnSize | bPresisi | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| tanggal | DBTYPE_DBDATE | 6 | 10 | 0 | Jelas |
| time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Menetapkan |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Jelas |
| Tanggal dan waktu | DBTYPE_DBTIMESTAMP | 16 | Dua puluh tiga | 3 | Jelas |
| tanggalwaktu2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Menetapkan |
| datetimeoffset (pergeseran tanggal dan waktu) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Menetapkan |
Di dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH selalu berlaku untuk jenis tanggal/waktu dan bendera berikut selalu salah:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Bendera yang tersisa (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE, dan DBCOLUMNFLAGS_WRITEUNKNOWN) dapat diatur.
Bendera baru DBCOLUMNFLAGS_SS_ISVARIABLESCALE disediakan di dwFlags untuk memungkinkan aplikasi menentukan jenis kolom server, di mana wType DBTYPE_DBTIMESTAMP. bScale juga harus digunakan untuk mengidentifikasi jenis server.