Using GemFire XD.NET / Developing ADO.NET Client Applications |
This release of the ADO.NET driver does not support DbProviderFactory. However, all implementation classes extend the corresponding classes in the System.Data.Common namespace. This allows applications to use the base classes of that namespace in the code and resort to GemFire XD-specific classes only for creating class objects, or when GemFire XD-specific methods must be invoked.
If an application creates a GFXDClientConnection explicitly, then it can continue to use the base DbConnection class as far as possible. The classes Pivotal.Data.GemFireXD.GFXDClientConnection, Pivotal.Data.GemFireXD.GFXDDataAdapter and Pivotal.Data.GemFireXD.GFXDCommandBuilder require explicit creation, while the remaining class objects can be obtained using the base classes of the System.Data.Common namespace.
For example, you need not create the GFXDCommand object explicitly because the DbConnection.CreateCommand() method provides a base DbCommand object. (This object is actually a GFXDCommand when it is using a GFXDClientConnection object.) Applications should use the base classes from the System.Data.Common namespace when writing ADO.NET code that can be easily changed to use a different driver, or when multiple drivers are used from the same code base.
The table shows the mapping of the GemFire XD ADO.NET driver classes to their base classes in the System.Data.Common namespace that you should use for generic coding. Also listed are the interfaces in System.Data implemented by the class.
GemFire XD ADO.NET Driver Class | ADO.NET base class (in System.Data.Common) | ADO.NET interfaces (in System.Data) |
---|---|---|
GFXDClientConnection | DbConnection | IDbConnection |
GFXDCommand | DbCommand | IDbCommand |
GFXDCommandBuilder | DbCommandBuilder | n/a |
GFXDDataAdapter | DbDataAdapter | IDbDataAdapter |
GFXDDataReader | DbDataReader | IDataReader |
GFXDException | DbException | n/a |
GFXDParameter | DbParameter | IDataParameter, IDbDataParameter |
GFXDParameterCollection | DbParameterCollection | IDataParameterCollection |
GFXDRowUpdatedEventArgs | RowUpdatedEventArgs | n/a |
GFXDRowUpdatingEventArgs | RowUpdatingEventArgs | n/a |
GFXDTransaction | DbTransaction | IDbTransaction |
GFXDType | (use DbTypes as in Table 1) | See Pivotal.Data.GemFireXD.GFXDType. |
// Open a new connection to the network server running on localhost:1527 string host = "localhost"; int port = 1527; string connectionStr = string.Format("server={0}:{1}", host, port); // use the GemFire XD specific class for connection creation using (GFXDClientConnection conn = new GFXDClientConnection(connectionStr)) { conn.Open(); // create a table // using the base DbCommand class rather than GemFire XD specific class DbCommand cmd = conn.CreateCommand(); cmd.CommandText = "create table t1 (id int primary key, addr varchar(20))"; cmd.ExecuteNonQuery(); // insert into the table using named parameters // using an abstracted method that can deal with difference in the // conventions of named parameters in different drivers cmd = conn.CreateCommand(); string idPrm = GetEscapedParameterName("ID"); string addrPrm = GetEscapedParameterName("ADDR"); cmd.CommandText = "insert into t1 values (" + idPrm + "," + addrPrm + ")"; cmd.Prepare(); // using the base DbParameter class DbParameter prm; for (int i = 0; i < 1000; i++) { // first the parameter for ID cmd.Parameters.Clear(); prm = cmd.CreateParameter(); prm.ParameterName = "ID"; prm.DbType = DbType.Int32; prm.Value = i; cmd.Parameters.Add(prm); // next the parameter for ADDR prm = cmd.CreateParameter(); prm.ParameterName = "ADDR"; prm.DbType = DbType.String; prm.Value = "addr" + i; cmd.Parameters.Add(prm); cmd.ExecuteNonQuery(); } // drop the table cmd = conn.CreateCommand(); cmd.CommandText = "drop table t1"; cmd.ExecuteNonQuery(); conn.Close(); }