Navigation
Learn About
Developing With
Ingres Talk
Information
Toolbox
Views
Ingres DOT NET Development Center/Ingres DOT NET Learn
From Ingres Community Wiki
This page will provide you with both the latest news on the Ingres .NET Data Provider as well as everything you need to learn about .NET Data Provider and become proficient in using it to build Ingres applications.
Overview
The Ingres .NET Data Provider offers a series of .NET types to describe the user’s data, .NET provider classes to manipulate the data, and connection pooling to efficiently manage data connections. The design and naming conventions of the Ingres .NET Data Provider’s data types, classes, properties, and methods follow the same pattern as the Microsoft .NET Data Providers. Consequently, developers who are familiar with the Microsoft providers can easily develop or convert existing code from Microsoft databases to Ingres databases.
All Ingres .NET Data Provider modules are written in C#, a managed .NET language with full access to every .NET Framework capability. Even though the data provider is written in C#, any managed language such as VB.NET or J# can use the data provider because of .NET’s language interoperability feature.
The Ingres .NET Data Provider driver enables .NET-enabled applications to access Ingres, Enterprise Access and EDBC databases.
Source Code
The .NET Data Provider 2.0 source can be accessed here.
The .NET Roles and Membership Providers source code can be accessed here.
Architecture
.NET Configurations
The Ingres .NET Data Provider is a standalone assembly. Requests from the Ingres .NET Data Provider are sent to the Ingres Data Access Server (DAS) which translates the requests into an Ingres internal format and forwards the request to the appropriate DBMS Server.
.NET Data Provider Classes
The data provider provides the following classes
| Function | Description |
|---|---|
| IngresCommand | SQL command or a database procedure that executes against an Ingres or Enterprise Access database |
| IngresCommandBuilder | automatically generates INSERT, DELETE, and UPDATE commands into an IngresDataAdapter object for a simple single-table SELECT query |
| IngresConnection | represents an open connection to an Ingres database |
| IngresConnectionStringBuilder | provides a series of properties and methods to create syntactically correct connection string and to parse and rebuild existing connection strings |
| IngresDataReader | provides a means of reading a forward-only stream of rows from a result-set created by a SELECT query or a row-producing database procedure |
| IngresDataAdapter | represents a set of SQL statements and a database connection that are used to fill a DataSet and, optionally, update the Ingres database |
| IngresError | represents error or warning information returned by the Ingres database |
| IngresErrorCollection | represents a collection of the IngresError objects returned by the Ingres database |
| IngresException | represents the exception that is thrown when error information is returned by the Ingres database |
| IngresFactory | helps generates many of the other Ingres classes in an interoperable data provider model. For each Ingres class that the factory wants to construct, simply call the Ingres constructor for that class and return the object instance. |
| IngresInfoMessageEventArgs | provides the information on warnings from the database to the delegate method that handles the InfoMessage event |
| IngresInfoMessageEventHandler | represents the delegate method that handles the InfoMessage event. |
| IngresMetaDataCollectionNames | presents information on metadata, such as tables, views, and columns |
| IngresParameter | represents a parameter for an IngresCommand for each question mark (?) placeholder in the command and, optionally, its mapping to a DataSet column |
| IngresParameterCollection | represents a collection of all parameters for an IngresCommand object and their mapping to a DataSet object |
| IngresPermission | provides additional information that a user has a security level sufficient to access the Ingres database. At present, the class is not used by the Ingres .NET Data Provider. |
| IngresRowUpdatedEventArgs | provides the information for the RowUpdated event of an IngresDataAdapter |
| IngresRowUpdatedEventHandler | represents a delegate method that handles the RowUpdated event of an IngresDataAdapter |
| IngresRowUpdatingEventArgs | provides the information for the RowUpdating event of an IngresDataAdapter |
| IngresRowUpdatingEventHandler | represents a delegate method that handles the RowUpdating event of an IngresDataAdapter |
| IngresTransaction | represents a local, non-distributed database transaction. Each connection is associated with a transaction. This object allows manual commit or rollback control over the pending local transaction |
Specifications
Ingres .NET Data Provider Feature Availability
Ingres .NET Data Provider Versions
The following table provides the list of Ingres .Net Data Provider versions. Additional information about the data provider can be found in the Ingres Connectivity Guide for the corresponding Ingres DBMS version.
| Driver Version | .NET Assembly Name | .NET Assembly Version | .NET Framework Supported | Ingres DBMS Version Released With | Visual Studio Integration | Platform | Status |
|---|---|---|---|---|---|---|---|
| 2.1.1010.x | Ingres.Client | 2.1 | 2.0, 3.0, 3.5, and 4.0 | Ingres 10.1 | 2005, 2008, 2010 | Windows | Recommended, 2.1.1010.59 is the current GA version posted on ESD |
| 2.1.1000.x | Ingres.Client | 2.1 | 2.0, 3.0, 3.5, and 4.0 | Ingres 10 | 2005, 2008 | Windows | Recommended - 2.1.1000.39 is the GA version included with Ingres 10 |
| 2.1.930.x | Ingres.Client | 2.1 | 2.0, 3.0, and 3.5 | Ingres 9.3.x | 2005, 2008 | Windows | Released - 9.3 and associated versions have entered drop support status |
| 2.1.920.x | Ingres.Client | 2.1 | 2.0, 3.0, and 3.5 | Ingres 2006r3 (Ingres 9.2.x) | 2005, 2008 | Windows | Recommended |
| 2.0.910.x/2.0.0.x | Ingres.Client | 2.0 | 2.0, 3.0, and 3.5 | Ingres 2006r2 (Ingres 9.1.x ) | 2005 | Windows | Released, 9.1 and associated versions have entered drop support status |
| 1.1.x | Ca.Ingres.Client | 1.1 | 1.1 | Ingres 2006 (9.0.4) | Windows | Released - NOTE: Ingres 2006r2 (9.1) will be the last Ingres release to contain the .NET Data Provider version 1.1 as future enhancements will be made only to the Ingres .NET Data Provider version 2.1. |
The Driver Version is defined as the file version of the Ingres.Client.dll of the Ingres .NET Data Provider.
Older Ingres versions can also be accessed by the .NET Data Provider but but there will need to be an Ingres 2006 or later client installation containing a Data Access Server (DAS) that the .NET Data Provider will communicate with and then communicate via Ingres Net to the target database.
i.e. .NET Data Provider would communicate with Ingres 9.2 Data Access Server which in turn would communicate across Ingres Net to Ingres 2.6 DBMS.
GA versions of the Ingres .NET Data Provider can be downloaded at http://esd.ingres.com/product/drivers/.Net_Data_Provider.
Community Preview (pre-GA) versions of the Ingres .NET Data Provider can be downloaded at http://esd.ingres.com/product/Community_Projects/Drivers/Windows_32-Bit/.Net_Data_Provider/.
The Ingres .NET Data Provider continues to move forward with .NET specific features and exploitation of features added to the Ingres DBMS. This document attempts to detail what became available when.
Features Available in Ingres .NET Data Provider 2.1.1010.x
The following feature(s) became available with the Ingres .NET Data Provider 2.1.1010.x. Some of the features below are available with the Community version of Ingres 10.1 but most are not.
| Feature/Bug | Ingres Data Provider Version | Requires Updated DAS, Minimum DAS Version | Requires Updated Ingres DBMS Version, Minimum DBMS Version | Status | More Information |
|---|---|---|---|---|---|
| .NET Data Provider support for Pool Check Interval and Connection Lifetime | 2.1.1010.55 | No | No | GA - 10.1 | Project Page |
| Visual Studio 2012 Support | 2.1.1010.52 | No | No | Planned for 10.1 | The Ingres .NET Data Provider supports an integration with Visual Studio in the VS design experience of connections, data sources, toolbox items, query designers, and wizards. This capability needs to be declared to VS through certain registry entries. An installer change adds the registry entries for VS2012 (11.0). |
| Line-Oriented Comment Support | 2.1.1010.51 | No | No | GA - 10.1 | Project Page |
| Common Table Expression (CTE) Support | 2.1.1010.49 | No | 10.1 | GA - 10.1 | Project Page |
| Support Batch operations using a .NET DataAdapter | 2.1.1010.46 | 10.0 | 10.0 | GA - 10.1 | Project Page |
| .NET Date Alias Support | 2.1.1010.45 | No | No | GA - 10.1 | Project Page |
| .NET EnlistTransaction and TransactionScope 64-bit Support | 2.1.1010.43 | No | No | GA - 10.1 | Project Page |
| Connection string Identifier_Delimiter = Bracket support | 2.1.1010.43 | No | No | GA - 10.1 | Project Page |
| Visual Studio 2010 Support | 2.1.1010.39 | No | No | GA - 10.1, Community Preview, 10.1 b106 & later | The Ingres .NET Data Provider supports an integration with Visual Studio in the VS design experience of connections, data sources, toolbox items, query designers, and wizards. This capability needs to be declared to VS through certain registry entries. An installer change adds the registry entries for VS2010 (10.0). |
Features Available in Ingres .NET Data Provider 2.1.1000.x
The following feature(s) became available with the Ingres .NET Data Provider 2.1.1000.33. This version is available with the GA version of Ingres 10.
| Feature/Bug | Ingres Data Provider Version | Requires Updated DAS, Minimum DAS Version | Requires Updated Ingres DBMS Version, Minimum DBMS Version | Status | More Information |
|---|---|---|---|---|---|
| Connection string Identifier_Delimiter = Bracket support | 2.1.1000.43 | No | No | Available as a patch for Ingres 10, will be included in Ingres 10.0.1 | Project Page |
| Visual Studio 2010 integration support | 2.1.1000.39 | No | No | Available as a patch for Ingres 10, will be included in Ingres 10.0.1 | The Ingres .NET Data Provider supports an integration with Visual Studio in the VS design experience of connections, data sources, toolbox items, query designers, and wizards. This capability needs to be declared to VS through certain registry entries. An installer change adds the registry entries for VS2010 (10.0). |
| Named Parameters in Parameterized Queries | 2.1.1000.33 | No | No | Community Preview, 10 b123 & later, GA Ingres 10 (b132) & later | Project Page |
| Support Positional Parameters | 2.1.1000.33 | Yes, 10 b122 and later, GA Ingres 10 (b132) | Yes, 10 b122 and later, GA Ingres 10 (b132) | Community Preview, 10 b123 & late, GA Ingres 10( b132) & laterr | Project Page |
| Add IngresParameterCollection.AddWithValue() method | 2.1.1000.33 | No | No | Community Preview, 10 b123 & later, GA Ingres 10 ( b132) & later | Project Page |
| IngresType.IngresDate | 2.1.1000.31 | Yes, 9.1 | Yes, 9.1 | Community Preview, 10 b123 & later, GA Ingres 10 (b132) & later | Project Page |
| Boolean Data Type Support | 2.1.1000.30 | Yes, 10 | Yes, 10 b119, GA Ingres 10 (b132) | Community Preview, 10 b119 & later | Project Page |
Features Available in Ingres .NET Data Provider 2.1.930.24
The following feature(s) became available with the Ingres .NET Data Provider 2.1.930.24. This version was released with Ingres 9.3.0.
| Feature/Bug | Ingres Data Provider Version | Requires Updated DAS, Minimum DAS Version | Requires Updated Ingres DBMS Version, Minimum DBMS Version | Status | More Information |
|---|---|---|---|---|---|
| .NET EnlistTransaction and TransactionScope Support | 2.1.930.24 | No | No | GA | Project Page |
| Multiple Data Access Server (DAS) Support | 2.1.930.24 | Yes, 9.3 | No | GA | Master Project Page , .NET Project Page |
Features Available in Ingres .NET Data Provider 2.1.920.15
The following feature(s) became available with the Ingres .NET Data Provider 2.1.920.15. This version was released with Ingres 9.2.0.
| Feature/Bug | Ingres Data Provider Version | Requires Updated DAS, Minimum DAS Version | Requires Updated Ingres DBMS Version, Minimum DBMS Version | Status | More Information |
|---|---|---|---|---|---|
| IngresConnection.ConnectionString Support for dbms_user, dbms_password, and charset | 2.1.920.15 | No | No | GA | Project Page |
| Update mapping of Ingres ANSI Interval Day to Second | 2.1.920.15 | No | No | GA | Project Page |
| Capture DBMS trace information from a .NET application | 2.1.920.15 | Ingres 9.1 | Ingres 9.1 | GA | None |
Features Available in Ingres .NET Data Provider 2.0.0.4
The following feature(s) became available with the Ingres .NET Data Provider 2.0.0.4. This version was released with Ingres 9.1.0. The version string was later updated to reflect the Ingres version it was distributed with so the version became 2.0.910.x.
| Feature/Bug | Ingres Data Provider Version | Requires Updated DAS, Minimum DAS Version | Requires Updated Ingres DBMS Version, Minimum DBMS Version | Status | More Information |
|---|---|---|---|---|---|
| Enhanced to support the Microsoft .NET 2.0 Framework | 2.0.0.4 | No | No | GA | Project Page Note: The new Ingres.Client assembly of Ingres 9.1 (2006 Release 2) replaces the old Ca.Ingres.Client assembly of Ingres2006. Old applications that want to use the new Ingres.Client assembly require source application changes. |
| Enhanced to support the Microsoft Visual Studio 2005. | 2.0.0.4 | No | No | GA | Project Page Note: The new Ingres.Client assembly of Ingres 9.1 (2006 Release 2) replaces the old Ca.Ingres.Client assembly of Ingres2006. Old applications that want to use the new Ingres.Client assembly require source application changes. |
| Support for ANSI Date/Time data types | 2.0.0.4 | Yes, 9.1 (2006r2) | Yes, 9.1 (2006r2) | GA | Project Page |
| Add Support for IPv6 | 2.0.0.4 | Yes, 9.1 (2006r2) | Yes, 9.1 (2006r2) | GA | Project Page |
On-Line Documentation
The Ingres .NET Data Provider is documented in the Ingres Connectivity Guide available online at Docs. In addition, the Ingres SQL Reference Guide documents SQL Statements available with the Ingres .NET Data Provider.
Articles
Articles dealing with the Ingres .NET Driver and Integration with other technologies can be found at Articles
Examples
Example code for accessing Ingres generally can be found in Code Samples.
A tutorial to help in getting started with the Ingres .NET data provider can be found here .
The following code samples demonstrate use of the Ingres .NET Data Provider.
Demo Applications
| .NET Program Examples | Description |
|---|---|
| Frequent Flyer Demo | The initial implementation of the Frequent Flyer Demo was in Csharp. The CsharpFrequent Flyer application is a standalone Windows desktop application that uses System.Windows.* APIs that come with Windows OS for its GUI components and makes direct SQL queries to Ingres .NET DataProvider. It doesn't require any external libraries. Obviously, this application only runs on Windows. This application is provided under the demo directory of an Ingres installation if the .NET Data Provider and the demodb is installed. |
Connections
| .NET Program Examples | Description |
|---|---|
| .NET - Connect to a database as current user | This simple example shows how to connect to Ingres using the Ingres .NET Data Provider. The connection string defaults to Port=II7 and to the current user credentials. |
| .NET Provider for ODBC - Insert Strings into Varchar | The String data type in .NET applications is Unicode based (UTF-16 encoding). This .NET Data Provider for ODBC (ODBC.NET) C# sample program demonstrates how to INSERT Strings into an Ingres varchar datatype. |
Executing Queries
| .NET Program Examples | Description |
|---|---|
| .NET - DataReader | This simple example shows how to access a stream of Ingres data using the IngresDataReader class of the Ingres .NET Data Provider. |
| .NET - EnlistTransaction and TransactionScope | IngresConnection's EnlistTransaction( ) method enables the Ingres .NET Data Provider to interface to an explicit transaction programming model using the .NET Transaction class or to an implicit transaction programming model using the .NET TransactionScope class. The example demonstrates a coordinated commit between two databases within a distributed transaction. This support is in Ingres 9.3 and later. |
| Using the new Ingres 10 Boolean Data Type with .NET | A sample C# program that displays usage of the new Ingres 10 Boolean Data Type with .NET. |
DataSet
| .NET Program Examples | Description |
|---|---|
| .NET - DataSet | This simple example shows how to access Ingres data and fill a DataSet using the IngresDataAdapter class of the Ingres .NET Data Provider. |
IngresStoredProcedures
| .NET Program Examples | Description |
|---|---|
| .NET - IngresStoredProcedures | This step-by-step article uses VB.NET and the IngresDataReader object to retrieve data from an Ingres stored procedure. |
| .NET - IngresStoredProcedures - Parameters | This C# code fragment calls an Ingres stored procedure with Input and InputOutput parameters. |
| .NET - IngresStoredProcedures - ReturnValue | This C# code fragment calls an Ingres stored procedure with ReturnValue, Input, and InputOutput parameters. |
| .NET - IngresStoredProcedures - Global Session Temporary Table | This C# code fragment calls an Ingres stored procedure passing a session temporary table. The code then retrieves data from the table to verify that the stored procedure executed successfully. |
| .NET - IngresStoredProcedures - InfoMessageEventHandler | This C# program accesses the MESSAGE data returned by an Ingres stored procedure. The data provider uses the IngresInfoMessageEventHandler to access the returned string and code. |
Presentations
Here are links to webinars that have been previously given. You can download the presentations and webinar replays. Note that replaying any of the webinars requires that you first install the WebEx ARF media player. Of course, you need Adobe Acrobat Reader for PDF files and InfoZip is a nice open source utility for handling ZIP files.
- Connecting With Ingres Architecture
- Ingres with MS .NET and C# (VIP Webinar). Do you develop in the Microsoft .NET Framework with C# programming language? You will learn the capabilities of the new .NET Framework 2.0 data adapter and take a tour of the new C# demonstration program included with Ingres 2006 Release 2. You can download the presentation (pdf) and and replay the DOWNLOAD
Open Source Notes
The packaged Ingres .NET Data Provider installs the data provider binary into the Ingres directory and Global Assembly Cache (GAC), updates the Windows registry, and modifies .NET configuration files for support of all features of the Ingres .NET Data Provider. No other action is needed by application developers in order to reference and execute against the Ingres .NET Data Provider.
For experimentation or to understand the behavior of the code better, the source code for the Ingres .NET Data Provider 2.0 is distributed as part of Ingres Open Source distribution for the Windows platform. The Ingres .NET Data Provider source code is located in the ...\common\dotnet2 directory. The source is organized in a Visual Studio 2005 (VS 2005) project solution. The VS 2005 solution file is dataprovider2.sln in the directory. Both Visual Studio 2005 and the Visual Studio 2005 SDK are needed to compile the data provider. The Open Source developer also needs to define his own Strong Name Key files. More information on the procedure can be found in the ...\common\dotnet2\specials\readme.txt file. The output of the compilation can be used in xcopy type deployment, but it will lack the Visual Studio 2005 design-time integration features that are installed by the standard Ingres install.
To add the compiled data provider assembly to the GAC, run the .NET Framework SDK gacutil.exe utility against the Ingres.Client.dll file to add the Ingres.Client assembly to the GAC. If data provider factory features are desired, run the .NET Framework SDK installutil.exe utility against the Ingres.Install.dll file to add/remove the .NET Data Provider for Ingres DbFactory information in the .NET Framework's machine.config file.

