IDataRecord Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce l'accesso ai valori di colonna all'interno di ogni riga per un DataReaderoggetto e viene implementato dai provider di dati .NET che accedono ai database relazionali.
public interface class IDataRecord
public interface IDataRecord
type IDataRecord = interface
Public Interface IDataRecord
- Derivato
Esempio
Nell'esempio seguente vengono create istanze delle classi derivate, SqlConnection, SqlCommande SqlDataReader. L'esempio legge i dati, scrivendoli nella console. Infine, l'esempio chiude e SqlDataReaderquindi .SqlConnection
private static void ReadOrderData(string connectionString)
{
string queryString =
"SELECT OrderID, CustomerID FROM dbo.Orders;";
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command =
new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
ReadSingleRow((IDataRecord)reader);
}
// Call Close when done reading.
reader.Close();
}
}
private static void ReadSingleRow(IDataRecord dataRecord)
{
Console.WriteLine(String.Format("{0}, {1}", dataRecord[0], dataRecord[1]));
}
Private Sub ReadOrderData(ByVal connectionString As String)
Dim queryString As String = _
"SELECT OrderID, CustomerID FROM dbo.Orders;"
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
' Call Read before accessing data.
While reader.Read()
ReadSingleRow(CType(reader, IDataRecord))
End While
' Call Close when done reading.
reader.Close()
End Using
End Sub
Private Sub ReadSingleRow(ByVal record As IDataRecord)
Console.WriteLine(String.Format("{0}, {1}", record(0), record(1)))
End Sub
Commenti
Le IDataReader interfacce e IDataRecord consentono a una classe che eredita di implementare una DataReader classe . In questo modo è possibile leggere uno o più flussi forward-only dei set di risultati. Per altre informazioni sulle DataReader classi, vedere Recupero di dati tramite un DataReader.
Un'applicazione non crea direttamente un'istanza dell'interfaccia, ma crea un'istanza IDataRecord di una classe che eredita IDataRecord. In genere, è possibile eseguire questa operazione ottenendo un DataReader oggetto tramite il ExecuteReader metodo dell'oggetto Command .
Le classi che ereditano IDataRecord devono implementare tutti i membri ereditati e in genere definiscono membri aggiuntivi per aggiungere funzionalità specifiche del provider.
I provider che implementano un DataReader sono necessari per esporre i dati in tipi CLR (Common Language Runtime). La coercizione dei tipi è definita per alcuni tipi non inclusi in CLR. È possibile accedere a questi valori come tipi alternativi conformi ai tipi CLR. Ad esempio, nella tabella seguente sono elencati i mapping suggeriti dai tipi di dati OLE DB ai tipi CLR, con tipi alternativi tra parentesi.
| Tipo OLE DB | Tipo CLR |
|---|---|
| DBTYPE_BOOL | Int16 |
| DBTYPE_BSTR | string |
| DBTYPE_BYTES | byte[] |
| DBTYPE_CY | Decimale |
| DBTYPE_DATE | Data e ora |
| DBTYPE_DBDATE | Data e ora |
| DBTYPE_DBTIME | Data e ora |
| DBTYPE_DBTIMESTAMP | Data e ora |
| DBTYPE_DECIMAL | Decimale |
| DBTYPE_EMPTY | Null |
| Errore di tipo database (DBTYPE_ERROR) | EccezioneEsterna |
| DBTYPE_FILETIME | Data e ora |
| DBTYPE_GUID (identificatore globale univoco) | Guid |
| DBTYPE_HCHAPTER | non supportato |
| DBTYPE_I1 | SByte |
| DBTYPE_I2 | Int16 |
| DBTYPE_I4 | Int32 |
| DBTYPE_I8 | Int64 |
| DBTYPE_IDISPATCH | object |
| DBTYPE_IUNKNOWN | object |
| DBTYPE_NULL | Dbnull |
| DBTYPE_NUMERIC | Decimale |
| DBTYPE_PROPVARIANT | object |
| DBTYPE_R4 | Single |
| DBTYPE_R8 | Double |
| DBTYPE_STR | string |
| DBTYPE_UDT | non supportato |
| DBTYPE_UI1 | byte (Int16) |
| DBTYPE_UI2 | UInt16 (Int32) |
| DBTYPE_UI4 | UInt32 (Int64) |
| DBTYPE_UI8 | UInt64 (decimale) |
| DBTYPE_VARIANT | object |
| DBTYPE_VARNUMERIC | non supportato |
| DBTYPE_WSTR | string |
Proprietà
| Nome | Descrizione |
|---|---|
| FieldCount |
Ottiene il numero di colonne nella riga corrente. |
| Item[Int32] |
Ottiene la colonna che si trova in corrispondenza dell'indice specificato. |
| Item[String] |
Ottiene la colonna con il nome specificato. |
Metodi
| Nome | Descrizione |
|---|---|
| GetBoolean(Int32) |
Ottiene il valore della colonna specificata come valore booleano. |
| GetByte(Int32) |
Ottiene il valore intero senza segno a 8 bit della colonna specificata. |
| GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Legge un flusso di byte dall'offset di colonna specificato nel buffer come matrice, a partire dall'offset del buffer specificato. |
| GetChar(Int32) |
Ottiene il valore del carattere della colonna specificata. |
| GetChars(Int32, Int64, Char[], Int32, Int32) |
Legge un flusso di caratteri dall'offset di colonna specificato nel buffer come matrice, a partire dall'offset del buffer specificato. |
| GetData(Int32) |
Restituisce un oggetto IDataReader per l'ordinale di colonna specificato. |
| GetDataTypeName(Int32) |
Ottiene le informazioni sul tipo di dati per il campo specificato. |
| GetDateTime(Int32) |
Ottiene il valore dei dati di data e ora del campo specificato. |
| GetDecimal(Int32) |
Ottiene il valore numerico a posizione fissa del campo specificato. |
| GetDouble(Int32) |
Ottiene il numero a virgola mobile e precisione doppia del campo specificato. |
| GetFieldType(Int32) |
Ottiene le Type informazioni corrispondenti al tipo di Object che verrebbe restituito da GetValue(Int32). |
| GetFloat(Int32) |
Ottiene il numero a virgola mobile e precisione singola del campo specificato. |
| GetGuid(Int32) |
Restituisce il valore GUID del campo specificato. |
| GetInt16(Int32) |
Ottiene il valore intero con segno a 16 bit del campo specificato. |
| GetInt32(Int32) |
Ottiene il valore intero con segno a 32 bit del campo specificato. |
| GetInt64(Int32) |
Ottiene il valore intero con segno a 64 bit del campo specificato. |
| GetName(Int32) |
Ottiene il nome del campo da trovare. |
| GetOrdinal(String) |
Restituisce l'indice del campo denominato. |
| GetString(Int32) |
Ottiene il valore stringa del campo specificato. |
| GetValue(Int32) |
Restituisce il valore del campo specificato. |
| GetValues(Object[]) |
Popola una matrice di oggetti con i valori di colonna del record corrente. |
| IsDBNull(Int32) |
Restituisce un valore che indica se il campo specificato è impostato su Null. |