DALC4NET A Generic Data Access Layer For DOT NET
DALC4NET A Generic Data Access Layer For DOT NET
Introduction
DALC4NET is an Open Source data access layer built for Microsoft .NET projects. It enables us to access data from databases including SQL Server, Oracle, MySQL, Microsoft Access, and Microsoft Excel. DALC4NET was developed using C#.NET. Microsoft .NET Framework 2.0 is required to use DALC4NET. Users can freely modify the source code as per their needs. For any feedback/ suggestions, you can email the author at [email protected]. Note: In order to connect with a MySQL database, follow the steps below:
1. Click here to download the MySQL Connector for .NET. 2. Install the downloaded MySQL Connector. This will install
the MySql.Data assembly to your GAC (Global Assembly Cache). the version and public key token of the newly installed assembly.
Collapse | Copy Code
3. Add the following lines to your App.config/ Web.config file in order to indicate
<system.data> <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.0.3.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d"/> </DbProviderFactories> </system.data>
you may go to Start -> Run -> Type assembly, and hit the Enter key. Search for the assembly MySql.Data and right click on it. A new window will open; copy the Version and PublicKeyToken and use those values in your config file.
2. Various Providers
Database Microsoft SQL Server Oracle MySQL Microsoft Access / Microsoft Excel Microsoft Access / Microsoft Excel Provider to be used
DBHelper is a Singleton class and hence we will not see any constructor for the DBHelper class (Singleton classes have a private constructor). The GetInstance() method can be used for creating the instance of the class. TheGetInstance() method has three overloads:
i.
No parameter
Collapse | Copy Code
This instance does not require a parameter. This overload creates a connection for the connection string name mentioned as the default connection.
Note: For using this overload, add an appSettings key defaultConnection" and set your appropriate connections name as the value for this key. This is the most recommended overload as you need not do any kind of code change if you want to switch to a different database. E.g., let's say an application is supposed to have three databases, Microsoft SQL Server, Oracle, and MySQL. Create three connection strings inapp/web.config files connectionString section, say sqlCon, oracleCon, mySqlCon. If you want the application to use SQL Server, set value="sqlCon" for appSettings key="defaultConnection". In future, if your client wants to use an Oracle database, then after porting the Oracle database, you simply need to change the defaultConnection value: value = oracleCon".
ii.
This overload creates an instance for the connection name specified in the app/web.config file.
iii.
This overload creates an instance for the specified connection string and provider name.
4.3 Execute a Stored Procedure with multiple parameters and using Transaction
Collapse | Copy Code
DBParameterCollection paramCollection = new DBParameterCollection(); paramCollection.Add(param1); paramCollection.Add(param2); paramCollection.Add(param3); IDbTransaction transaction = _dbHelper.BeginTransaction(); try { rowsAffected = _dbHelper.ExecuteNonQuery ("PROC_DALC4NET_EXECUTE_NON_QUERY_STORED_PROC_MULTIPLE_PARAM", paramCollection, transaction, CommandType.StoredProcedure); message = rowsAffected > 0 ? "Record inserted successfully." : "Error in inserting record."; _dbHelper.CommitTransaction(transaction); } catch (Exception err) {
_dbHelper.RollbackTransaction(transaction); }
In a similar way, we can use the appropriate method and overload to execute a SQL Command or Stored Procedure.
DBHelper is a public class which enables the user to communicate with the database with the help of threepublic constructors.
Collapse | Copy Code
#region "Constructor Methods" /// <summary> /// This Constructor creates instance of the class for defaultConnection /// </summary> public DBHelper() { //SOME CODE HERE... } /// <summary> /// This constructor should be used for creation of the instance /// for the specified app settings connection name /// </summary> /// <param name="connectionName">App Setting's connection name</param> public DBHelper(string connectionName) { //SOME CODE HERE... } /// <summary> /// Constructor creates instance of the class for the specified connection /// string and provider name /// </summary> /// <param name="connectionString">Connection String</param> /// <param name="providerName">Provider name</param> public DBHelper(string connectionString, string providerName) { //SOME CODE HERE... }
#endregion
5.2 AssemblyProvider class The AssemblyProvider class implements and uses the Factory design pattern to obtain the appropriate provider type from the provider name.
Collapse | Copy Code
6. DALC4NET Help
Use the DALC4NET tester to see how SQL Commands / Stored Procedures are executed. Here you may find an example for execution of various kinds of SQL Commands / Stored Procedures and the uses of their result. In order to use the DALC4NET Test application: 1. Download the appropriate database backup (SQL Server/ MySQL) 2. Restore the backup with the name DALC4NET_DB Now you can play around with the sample code: