¿No se les antoja crear una DLL hoy? ¿Sí? Pues lástima Margarito, mejor hoy vamos a leer un manual completo sobre cómo hacer huevo a la mexicana con chorizo, así que siéntense y comiencen a leer….. ¡Ja! ¡Cayeron! El manual de hoy tratará sobre cómo crear una mugrosa DLL pero con .NET utilizando C# (TAN TAN TAN, no se asusten, no hagan cara de mensos, niñita cuyo nombre comienza con P y termina con S, no te mees en los calzones). Como ya anteriormente les había dicho, C# no es un lenguaje tan difícil, de hecho, es más elegante que Visual Basic (Me duele decirlo, pero así es) y más ordenado, pero la principal razón por lo que los invito a empaparse de este lenguaje es porque allá afuera (sí mijas, allá en el mundo real, allá en donde ni el animé ni el hentai, ni el yahoi para algunos, existe) en el mundo real, exigen conocimientos en dicho lenguaje, ¿por qué? Emmm, pues pueque sea más por llevar un control en el código aunado a una total y absurda ignorancia, pero en fin, ellos son los que pagan, así que a aprender se ha dicho.
Una vez más les digo esto también, estudien cómo diablos va estructurada una clase, me les adelanto un poquito nomás diciéndoles que una clase va conformada de tres partes.
1.- Nombre de la clase
2.- Estructura o Atributos
3.- Comportamiento
Considero que con eso es suficiente, ahora vayan a la página de Microsoft, y sólo bájense los manuales que vienen con sus exámenes de Programador 5 estrellas.
Comencemos…Pues primero lo primero, abramos Visual C# o Visual Studio (Visual Studio para los que lo compraron o se lo piratearon, inches batos lacras), elijamos Crear Proyecto, luego Biblioteca de clases, en el nombre optemos por ponerle ranefiDLL y presionemos Aceptar.
La imagen de cajón xD

Creando el proyecto
Ahora cambien el nombre de la clase (Class1) por TestingDll y agreguen dos Namespace a la clase:
using System.Data;
using System.Data.OleDb;
Cambiando el nombre de la cochina clase…. Oooooooh
Lo siguiente será comenzar a construir la segunda parte de la clase (recuerden las tres partes que conforman una clase bola de bueyes), para eso tendrán que agregar el siguiente código:
private string _strDbLocation;
private string _strDbFile;
private string _strDbPwd;
private string _strDbTable;
public string DatabaseLocation
{
get { return _strDbLocation; }
set { _strDbLocation = value; }
}
public string DatabaseFile
{
get { return _strDbFile; }
set { _strDbFile = value; }
}
public string DatabasePwd
{
get { return _strDbPwd; }
set { _strDbPwd = value; }
}
public string DatabaseTable
{
get { return _strDbTable; }
set { _strDbTable = value; }
}
Y ahora siguen los constructores (¿quéeee, no saben qué diablos es eso? Pues pídanle un milagrito a San Google)
public TestingDll(string strDatabaseLocation, string strDatabaseFile, string strDatabasePassword, string strDatabaseTable)
{
_strDbLocation = strDatabaseLocation;
_strDbFile = strDatabaseFile;
_strDbPwd = strDatabasePassword;
_strDbTable = strDatabaseTable;
}
public TestingDll(string strDatabaseLocation, string strDatabaseFile, string strDatabaseTable)
{
_strDbLocation = strDatabaseLocation;
_strDbFile = strDatabaseFile;
_strDbTable = strDatabaseTable;
}
Ahora por último sigue una pequeña función que nos regresará un Dataset de la tabla de Access que nosotros definamos en el código que hará referencia a la librería que estamos creando. (¿por qué Access y no MySQL, SQL u Oracle? Pues porque se me incharon los tanates, jejeje.)
public DataSet ShowData()
{
DataSet dsData = new DataSet();
OleDbConnection oleCnn = null;
OleDbCommand oleCmd = null;
OleDbDataAdapter oleDa = null;
try
{
oleCnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + _strDbLocation + _strDbFile + ";" +
"Persist Security Info=False;" +
"Jet OLEDB:Database Password=" + _strDbPwd);
oleCmd = new OleDbCommand("SELECT * FROM " + _strDbTable, oleCnn);
oleDa = new OleDbDataAdapter(oleCmd);
oleDa.Fill(dsData);
return dsData;
}
catch
{
throw;
}
finally
{
oleCnn.Close(); oleCnn.Dispose();
}
}
Con esto podemos dar por terminada nuestra Dll. El código de nuestra librería debería quedar de esta forma:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
namespace ranefiDLL
{
public class TestingDll
{
private string _strDbLocation;
private string _strDbFile;
private string _strDbPwd;
private string _strDbTable;
public string DatabaseLocation
{
get { return _strDbLocation; }
set { _strDbLocation = value; }
}
public string DatabaseFile
{
get { return _strDbFile; }
set { _strDbFile = value; }
}
public string DatabasePwd
{
get { return _strDbPwd; }
set { _strDbPwd = value; }
}
public string DatabaseTable
{
get { return _strDbTable; }
set { _strDbTable = value; }
}
public TestingDll(string strDatabaseLocation, string strDatabaseFile, string strDatabasePassword, string strDatabaseTable)
{
_strDbLocation = strDatabaseLocation;
_strDbFile = strDatabaseFile;
_strDbPwd = strDatabasePassword;
_strDbTable = strDatabaseTable;
}
public TestingDll(string strDatabaseLocation, string strDatabaseFile, string strDatabaseTable)
{
_strDbLocation = strDatabaseLocation;
_strDbFile = strDatabaseFile;
_strDbTable = strDatabaseTable;
}
public DataSet ShowData()
{
DataSet dsData = new DataSet();
OleDbConnection oleCnn = null;
OleDbCommand oleCmd = null;
OleDbDataAdapter oleDa = null;
try
{
oleCnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + _strDbLocation + _strDbFile + ";" +
"Persist Security Info=False;" +
"Jet OLEDB:Database Password=" + _strDbPwd);
oleCmd = new OleDbCommand("SELECT * FROM " + _strDbTable, oleCnn);
oleDa = new OleDbDataAdapter(oleCmd);
oleDa.Fill(dsData);
return dsData;
}
catch
{
throw;
}
finally
{
oleCnn.Close(); oleCnn.Dispose();
}
}
}
}
Pues bueno, teniendo listo todo esto, nuestro siguiente paso será agregar o crear un proyecto de prueba para nuestra librería, en nuestro caso deberá ser crear un proyecto. Pero antes, intenten ejecutar la librería, notarán que aparece un espantoso error que nos solicita agregar un nuevo proyecto, pues bueno, eso es lo que haremos.
Agregando un nuevo proyectoPara agregar un nuevo proyecto, simplemente deberán hacer un clic en la solución (la mugre ésa que se llama Solution nombreProyecto donde nombreProyecto es el nombre del proyecto que ustedes definieron), dar clic derecho, seleccionar Agregar y posteriormente en Nuevo proyecto.

Ahora, seleccionen la opción que dice Aplicación para Windows, en el nombre del proyecto escriban LibTestApp y presionen Aceptar.

Antes de hacer cualquier cochinada, deberán agregar la referencia a la librería que acaban de crear (no está de más que les diga que dicha librería ya se compiló de forma automática en la carpeta Release que se encuentra dentro de la carpeta Bin del proyecto de la misma librería y que debe estar seleccionado el proyecto que acaban de agregar). Para llevar a cabo esto debemos dar clic sobre el proyecto llamadado LibTestApp y elegir Agregar referencia, posteriormente dan clic sobre la pestaña llamada Examinar, busquen la librería llamada ranefiDLL y den doble clic sobre ella.

Agregando la referencia

Buscando la librería recién creada
Al formulario, agreguen un control Button y un control DataGridView, den doble clic sobre el control Button e inserten el siguiente código, pero no sin antes haber agregado el Namespace llamado ranefiDLL (recuerden qué es eso batos locos):
using ranefiDLL;
String strDbLocation = @"C:\Documents and Settings\Colibricillo\Escritorio\Proyectos\InvoicesCreator\";
String strDbFile = "facturas.mdb";
String strDbPwd = "";
String strDbTable = "ciudades";
TestingDll AccessCnn = new TestingDll(strDbLocation, strDbFile, strDbPwd, strDbTable);
dataGridView1.DataSource = AccessCnn.ShowData().Tables[0];
dataGridView1.Refresh();
Por último, debemos definir el proyecto inicial, para hacer esto, debemos dar clic derecho a la solución y elegir la opción llamada Propiedades.

Definiendo un proyecto inicial
Ahora deberán elegir la opción llamada Proyecto de inicio único y seleccionar la opción llamada LibTestApp (nuestro proyecto de Windows Forms pelaos)

Definiendo proyecto inicial
Preparen, Apunten, F5Ahora sí mijas, den clic en Ejecutar y esperen a que cargue el formulario, posteriormente den un clic en el botón previamente agregado y notarán cómo se llena el DataGridView con información de la base de datos de Access (obviamente) que hayamos definido en el código.

Pero bueno, no me podía quedar con las ganas, vamos a agregar dicha librería a un proyecto creado en Visual Basic .NET, tan sólo pa que vean que tambor funciona en nuestro amado Basic. Para eso abran un proyecto de Visual Basic .NET, agreguen la referencia a la librería recién creada, agreguen dos controles al formulario, un DataGridView y un Button, den doble clic sobre el control Button e inserten el siguiente código (¡Pero recuerden! Deben agregar el Namespace llamado ranefiDLL):
imports ranefiDLL
Dim strDbLocation As String = "C:\Documents and Settings\Colibricillo\Escritorio\Proyectos\InvoicesCreator\"
Dim strDbFile As String = "facturas.mdb"
Dim strDbPwd = ""
Dim strDbTable = "ciudades"
Dim AccessCnn As TestingDll = New TestingDll(strDbLocation, strDbFile, strDbPwd, strDbTable)
DataGridView1.DataSource = AccessCnn.ShowData().Tables(0)
DataGridView1.Refresh()

Utilizando la Dll con Visual Basic .NET
¿Qué diablos se puede hacer con esto mi buen ranefi?Emmmm, pues no sé, ahí hállenle utilidad ustedes, jejejeje, no pos pueden distribuir sus librerías para facilitarle a algunos programadores o inclusive a nosotros mismos la difícil tarea de la codificación, pueden hacer tamales, tacos, tortas, conseguir chicas orientales gemelas ninfómanas, hacer muchos amigos y tener una vida larga y próspera, ¡ah! Y casi se me olvida, lo pueden poner en su currículo ; )
¡Ay papantla! Ahora ya sabemos cómo crear librerías en .NET, una excusa más para no salir de casa y continuar con nuestra sedentaria pero segura vida antisocial.
Espero que le hayan entendido, si no, ¡ME VALE WILSON! ¡Ja! Cayeron, pos ya saben batos, yo soy pura raza, publiquen sus dudas y comentarios, hasta recetas de cocina si así lo desean, que ahí cuando vea escritas todas sus leperadas, yo con mucho gusto las ignoraré (¡Ja! Cayeron de nuez).
Sayoonara batos locos cholos marihuanos!!!!!
Códigos de ejemploNOTA: Si hay algún error en este manual que consideren menester solventar, no duden en publicarlo en este mismo mensaje.