Version information
- Release date: March 17, 2026
- Version: V1.0.0 (
Oceanbase.ManagedDataAccess.1.0.0)
Overview
OceanBase Connector/NET V1.0.0 is the first official version released by OceanBase for the .NET ecosystem, marking a significant breakthrough in OceanBase's support for the .NET technology stack. Developed using C#, OceanBase Connector/NET operates on the .NET platform, offering a comprehensive solution for smoothly migrating enterprise applications from the Oracle ecosystem to OceanBase. V1.0.0 provides highly compatible interfaces with ODP.NET, enabling users to migrate their databases with minimal code changes, significantly reducing migration costs and risks.
As the initial release, V1.0.0 establishes the foundational architecture of the driver, supporting connections to OceanBase in both MySQL and Oracle modes. The driver includes core connection management capabilities such as OracleConnection, OracleParameter, and OracleTransaction, ensuring stable application connectivity and execution of basic database operations. It also supports common Oracle data types like Decimal, Varchar2, Date, and Blob, enhancing parameter binding and CRUD execution capabilities, thereby effectively reducing the cost of upgrading existing .NET applications. The driver also supports stored procedures and the PS (Prepared Statement) protocol, providing foundational guarantees for performance, compatibility, and scalability. Additionally, it supports cross-platform deployment across Windows, Linux, and macOS, further improving the efficiency and convenience of migrating and deploying enterprise applications.
We recommend that .NET applications planning to migrate from Oracle to OceanBase use this version for migration validation and business adaptation.
Key features
Connection management
Managed driver implementation
The OceanBase .NET driver is implemented purely in managed code, eliminating the need to install Oracle clients. It supports cross-platform deployment on Windows, Linux, and macOS. The driver uses a layered design, providing standard ODP.NET interface specifications at the upper layer and adapting to the OB Oracle protocol at the lower layer. This ensures seamless database migration without requiring code modifications.
Connection pool support
The driver supports automatic connection pool management, enhancing connection reuse efficiency. It allows configuration of connection pool behavior through connection string parameters. The connection pool includes monitoring for connection status and exception handling, ensuring connection reliability and meeting the high-concurrency access demands of enterprise applications.
Transaction capabilities
The driver supports basic transaction operations, including BeginTransaction, Commit, and Rollback. It also allows setting isolation levels such as ReadCommitted, RepeatableRead, and Serializable, ensuring transaction consistency across different business scenarios.
Data type support
Numeric types
V1.0.0 supports numeric types such as Byte, Int16, Int32, Int64, Decimal, Single, Double, BinaryFloat, and BinaryDouble, ensuring precise and efficient numeric calculations. The Decimal type supports high-precision numeric calculations, meeting the precision requirements of financial and other critical business scenarios.
Character types
The driver supports character types such as Varchar2, NVarchar2, Char, NChar, Clob, and NClob, including Unicode character set support, catering to international application needs. The Varchar2 type supports variable-length string storage, while the Char type supports fixed-length string storage.
Time types
The driver supports time-related types such as Date, TimeStamp, TimeStampLTZ, and TimeStampTZ, ensuring accurate time data processing. It also supports timezone-aware timestamp storage, meeting the time management needs of global business operations.
Binary types
The driver supports binary large object (BLOB) handling for types such as Blob, Raw, and LongRaw, catering to file storage and other scenarios. The Blob type supports BLOB storage, the Clob type supports character large object (CLOB) storage, and the Raw type supports raw binary data storage.
Other types
In addition to the aforementioned common types, V1.0.0 also supports types such as IntervalDS, IntervalYM, RefCursor (for storing results from stored procedure OUT parameters), and Boolean, providing comprehensive data type compatibility.
Reading and parameter binding
OracleBlob/OracleClob: LOB columns can be read usingGetOracleBlob/GetOracleClob.BLOB/CLOBparameters can be bound usingOracleDbType.Blob/OracleDbType.Clob.OracleTimeStamp/OracleTimeStampLTZ/OracleTimeStampTZ: Supports timestamp columns and parameters, including binary protocol serialization and literal format support.OracleIntervalDS/OracleIntervalYM: Supports interval types, which can be bound and read fromTimeSpanor specialized types.OracleRefCursor: When a stored procedure OUT parameter is of typeREF CURSOR, theOracleDataReadercan be obtained using multi-result sets (NextResult) orGetDataReader().
CRUD and stored procedures
Data query capabilities
The driver supports query operations such as ExecuteReader and ExecuteScalar, providing complete result set reading capabilities. It also supports multi-result set processing and data type conversion, ensuring the accuracy and completeness of query results.
Data update capabilities
The driver supports ExecuteNonQuery for executing INSERT, UPDATE, and DELETE operations, ensuring atomicity and consistency in data operations. It also supports batch operations and transaction control, meeting the data management needs of enterprise applications.
Transaction management capabilities
The driver supports transaction operations such as BeginTransaction, Commit, and Rollback, ensuring data consistency. It also allows setting transaction isolation levels and controlling transaction timeouts, meeting the transaction management needs of complex business scenarios.
Stored procedures and REF CURSOR
CommandType.StoredProcedure
The driver supports invoking stored procedures by name, with parameters bound through OracleParameterCollection. It supports parameter directions such as IN, OUT, InputOutput, and ReturnValue, providing comprehensive stored procedure invocation support.
REF CURSOR
The driver supports returning cursors as result sets from stored procedures, meeting the data processing needs of complex business logic. It also supports complete cursor data reading through multi-result set mechanisms.
Compatibility changes
Parameter changes
The connection string is configured by using MySqlConnectionStringBuilder. Parameter names are not case-sensitive.
The following table lists the commonly used keys and their default values in V1.0.0 by parameter type. In Oracle Database OB mode, Database is a required parameter.
Connection
| Connection string key (common) | Type | Default | Description |
|---|---|---|---|
| Server / Host / Data Source | string | "" | Server address; multiple hosts separated by commas; socket file path on Unix. Synonyms: DataSource, Address, Addr, Network Address |
| Port | uint | 3306 | Port number |
| User ID / UserID / Username | string | "" | Username. Synonyms: Uid, User name, User |
| Password / pwd | string | "" | Password |
| Database / Initial Catalog | string | "" | Initial database (schema). Required for Oracle mode |
| Load Balance / LoadBalance | MySqlLoadBalance | RoundRobin | Load balancing method for multiple hosts |
| Connection Protocol / Protocol | MySqlConnectionProtocol | Socket | Connection protocol (Socket / NamedPipe / Ssl, etc.) |
| Pipe Name / PipeName | string | "MYSQL" | Named pipe name (valid only when Protocol=NamedPipe) |
| Connection Timeout / Connect Timeout | uint | 15 | Connection timeout in seconds |
| Interactive Session / Interactive | bool | false | Whether it is an interactive session |
| Keep Alive / Keepalive | uint | 0 | TCP keepalive idle time in seconds; 0 means use system default |
| Server Redirection Mode | MySqlServerRedirectionMode | Disabled | Whether to enable server redirection |
| Server RSA Public Key File | string | "" | Path to the server's RSA public key file |
| Server SPN | string | "" | Server SPN (e.g., for auth_gssapi_client authentication) |
SSL/TLS
| Connection string key (common) | Type | Default | Description |
|---|---|---|---|
| SSL Mode / SslMode | MySqlSslMode | None | SSL mode (None / Preferred / Required / VerifyCA / VerifyFull, etc.) |
| Certificate File | string | "" | Path to the client certificate file (.pfx) |
| Certificate Password | string | "" | Certificate password |
| Certificate Store Location | MySqlCertificateStoreLocation | None | Certificate store location (None / CurrentUser / LocalMachine) |
| Certificate Thumbprint | string | "" | Certificate fingerprint (used when selecting a certificate from the store) |
| SSL Cert / SslCert | string | "" | Path to the client PEM certificate (used with SslKey, not with Certificate File) |
| SSL Key / SslKey | string | "" | Path to the client PEM private key |
| SSL CA / SslCa | string | "" | Path to the CA certificate (.pem) for VerifyCA/VerifyFull |
| TLS Version / TlsVersion | string | "" | Allowed TLS versions, e.g., "TLS 1.2, TLS 1.3"; empty means system default |
| TLS Cipher Suites | string | "" | Allowed cipher suites; empty means system default |
Connection pool
| Connection string key (common) | Type | Default | Description |
|---|---|---|---|
| Pooling | bool | true | Whether to enable connection pooling |
| Connection Lifetime / ConnectionLifeTime | uint | 0 | Maximum connection lifetime in seconds; 0 means no limit |
| Connection Reset / ConnectionReset | bool | true | Whether to reset the connection when it is retrieved from the pool (sends change user). |
| Connection Idle Timeout / ConnectionIdleTimeout | uint | 180 | Connection idle timeout in seconds |
| Minimum Pool Size / Min Pool Size | uint | 0 | Minimum number of connections in the pool |
| Maximum Pool Size / Max Pool Size | uint | 100 | Maximum number of connections in the pool |
| DNS Check Interval / DnsCheckInterval | uint | 0 | DNS change check interval in seconds; 0 means no check |
Other
| Connection string key (common) | Type | Default value | Description |
|---|---|---|---|
| Use LOB Locator V2 / UseLobLocatorV2 | bool | true | Whether to enable LOB Locator V2 (OceanBase capability) |
| Allow Load Local Infile | bool | false | Whether to allow LOAD DATA LOCAL |
| Allow Public Key Retrieval | bool | false | Whether to allow retrieval of RSA public key from the server |
| Allow User Variables | bool | false | Whether to allow the use of user variables (@xxx) in SQL |
| Allow Zero DateTime | bool | false | Whether to return DATETIME as MySqlDateTime (allowing zero values) |
| Application Name | string | "" | Program name (connection property program_name) |
| Auto Enlist / AutoEnlist | bool | true | Whether to automatically register with TransactionScope |
| Cancellation Timeout | int | 2 | Timeout (in seconds) for waiting for KILL QUERY when canceling a command. -1 means no limit. |
| Convert Zero DateTime | bool | false | Whether to convert invalid DATETIME to DateTime.MinValue |
| DateTime Kind | MySqlDateTimeKind | Unspecified | DateTimeKind for deserializing DATETIME |
| Default Command Timeout / Command Timeout | uint | 30 | Default command execution timeout (in seconds). 0 means no limit. |
| Force Synchronous | bool | false | Whether to force asynchronous methods to execute synchronously (for debugging) |
| GUID Format / GuidFormat | MySqlGuidFormat | Default | Which column types to read as Guid |
| Ignore Command Transaction | bool | false | Whether to ignore checking if the Command's Transaction matches the connection's current transaction |
| Ignore Prepare | bool | false | Whether to ignore Prepare/PrepareAsync calls |
| No Backslash Escapes | bool | false | Whether to not escape backslashes in string parameters (corresponds to server-side NO_BACKSLASH_ESCAPES) |
| Persist Security Info | bool | false | Whether to retain sensitive information (like passwords) in the connection string after the connection is opened |
| Pipelining | bool | true | Whether to enable query pipelining |
| Treat Tiny As Boolean | bool | true | Whether to return TINYINT(1) as a bool |
| Use Affected Rows | bool | false | Whether to report the number of affected rows instead of matched rows |
| Use Compression / Compress | bool | false | Whether to compress network packets |
| Use XA Transactions | bool | true | Whether TransactionScope uses XA distributed transactions |
Supported OBServer versions
This topic applies to OBServer 4.x, OBServer 3.x, and earlier versions.
We recommend that you use OBServer 4.x for better compatibility and performance.