saltar al contenido

Cómo crear una base de datos usando ADO.NET

Aprenda ADO.NET y cree una aplicación de base de datos ADO.NET “Hello World”. Este tutorial de ADO.NET se puede utilizar para cualquier producto que tenga controladores ADO.NET, incluidos MySQL, Oracle y RDM de Raima.

Antes de que empieces

Hay algunas cosas que debe asegurarse de comprender / obtener antes de comenzar. Eche un vistazo a continuación:
• Iniciar un símbolo del sistema en Windows o Linux.
• .NET framework 4.5 o superior instalado y listo para funcionar.
• Un editor de texto.
• Un controlador de base de datos ADO.NET incluido en productos como MySQL, PostgreSQL o RDM.

La base de datos de ADO.net

Pasos para crear su aplicación

Puede encontrar una muestra preempaquetada que utiliza el controlador ADO.NET de Raima y el sistema de administración de base de datos RDM en el sección de demostraciones. Seleccione el paquete de Windows o Linux "Hello World" que coincida con su sistema operativo. Puede seleccionar las otras muestras después de terminar este tutorial, ya que muestran usos cada vez más complejos de bases de datos a través de ADO.NET.

Instale el paquete en un nuevo directorio local. Como referencia, llamaremos a este directorio “/HelloWorld_ADO.NET”. Se puede ver el código fuente completo de HelloWorldADO.cs aquí.

Paso 1 Abra un indicador de línea de comando

Cambie al directorio en el que instaló los archivos de la muestra.

Paso 2 Ver su archivo .cs

Usando su editor de texto, vea el archivo “HelloWorldADO.NET.java”. Alternativamente, use nuestro copia en línea.

Paso 3 Ver su clase de muestra

Tu clase puede contener el mismo nombre que el archivo .cs que contiene la clase. Debería aparecer de la siguiente manera:

Namespace HelloWorldApplication {
class HelloWorldADO.NET {

}
}

En este ejemplo, todo se hace dentro de esta clase.

Paso 4 Examinando el método principal

El método principal es el punto de entrada a su programa. Para este ejemplo simple, solo usamos un archivo .cs. Por lo tanto, la clase contendrá el método principal como se muestra a continuación. No aceptaremos argumentos a este programa.
static void main() {

}

Paso 5 Creación e inicialización de su objeto de conexión

Inicializará su objeto Connection antes de tener acceso a cualquiera de los métodos que contiene.
Es una buena práctica iniciar un nuevo bloque de prueba para cada objeto que inicialice. Cuando haya terminado con el objeto, simplemente agregue un bloque finalmente que realice el método close () correspondiente, y el bloque más externo contendrá su bloque de captura para manejar todas las posibles Excepciones. Esto será más fácil de ver con el código completo.
* Nota: El tipo de objeto cambiará dependiendo del controlador que esté utilizando, en este caso, se está utilizando el controlador RDM ADO.NET, por lo que tenemos un objeto RdmConnection.
RdmConnection connection = new RdmConnection("host=localhost;database=hello_worldADO");
try {

}
} catch (Exception exception) {

} finally {
Conn.close();
}

Paso 6 Creación de su objeto de declaración

La conexión del objeto Connection recién creada tiene un método llamado createCommand () que devolverá un objeto RdmCommand. Luego usará ese objeto con esta Conexión a la base de datos.
RdmCommand command = connection.createCommand();
try {

} finally {
command.close();
}

Paso 7 Ejecute declaraciones para crear o abrir la base de datos

Con el comando de objeto RdmCommand que acaba de crear, puede ejecutar varios métodos diferentes según el tipo de declaración que desee ejecutar. Por ejemplo, si desea ejecutar una instrucción SQL como "OPEN database_name" o "DELETE * FROM table_name", debe ejecutar un método command.executeNonQuery (). Puede ver executeNonQuery () utilizado en el fragmento de código a continuación. En este ejemplo, crearemos la base de datos mediante programación. En este ejemplo, la base de datos es trivial y consta de una única tabla denominada hello_table que contiene una columna de un solo carácter denominada foo. La secuencia creará una tabla si aún no existe, o simplemente la abrirá si existe.
* Nota: esta base de datos se crea mediante programación. Existen herramientas para crear su base de datos por separado de su programa. Ver un rápido "Cómo crear una base de datos con SQL" tutorial sobre cómo hacer esto.

try {
RdmTransaction rdmtrans = connection.BeginTransaction();
command.CommandText = “CREATE TABLE hello_table (f00 char(31))”;
command.executeNonQuery();
rdmtrans.commit(); // now the database physically exists
} catch (Exception exception) {
// we are here if database exists
}

Paso 8 Insertar una nueva fila usando el objeto de declaración

Para insertar una sola fila en esta base de datos, usamos el método ExecuteNonQuery (), que se usa para declaraciones INSERT, UPDATE o DELETE completas (no preparadas). Esto inicia implícitamente una transacción, que será una unidad de trabajo de actualización aplicada a la base de datos de forma atómica. Un INSERT se muestra a continuación con un enlace de parámetro, pero se podrían agregar más en este punto.
command.CommandText = "INSERT INTO hello_table(f00) VALUES(?)";
command.CommandText = insertString;
RdmParameter parameter = new RdmParameter();
parameter.RdmType = RdmType.AnsiString;
parameter.Direction = ParameterDirection.Input;
parameter.Value = "Hello World!";
command.Parameters.Add(parameter);
command.ExecuteNonQuery();

Paso 9 Confirmación de cambios

Para que sus cambios finalicen en la base de datos, debe realizar una confirmación de transacción. En ADO.NET, esto se hace a través de un método en el objeto RdmTransaction. El método que usaremos es RdmTransaction.Commit () y finalizará cualquier cambio que haya realizado durante una transacción.
rdmtrans.Commit (); // Confirma todos los cambios

Paso 10 Creación de su objeto de conjunto de resultados (recuperación de datos de la base de datos)

En ADO.NET, cuando desea recuperar datos de la base de datos, realiza una instrucción SELECT de SQL utilizando su objeto Command con un método de ejecución que devuelve un objeto Conjunto de resultados. Este método se llama Command.executeReader (). Esto significa que ejecutará la consulta especificada y devolverá los resultados de la consulta en el lector dado.
command.CommandText = "SELECT * FROM hello_table";
RdmDataReader reader = command.ExecuteReader();
try {

} finally {
reader.Close();
}

Paso 11 Acceso al conjunto de resultados

Para acceder a todos los datos de su conjunto de resultados, debe recorrerlos en iteración. Se proporciona un método dentro del conjunto de resultados para verificar si el siguiente resultado en el conjunto de resultados es NULL, lo que significa que no hay más datos. Si el método reader.Read () devuelve TRUE, entonces hay datos en la base de datos y puede recuperarlos de su conjunto de resultados.
Para acceder a los datos dentro del conjunto de resultados, debe realizar un método getter. Existen numerosos métodos de obtención disponibles para recuperar el tipo de datos específico del conjunto de resultados. En este ejemplo queremos una cadena, por lo tanto, usamos el método reader.getString (), siendo el parámetro la columna (la primera / única columna es 0) de la que se está recuperando.
Eche un vistazo al código a continuación para ver un ejemplo de cómo se puede hacer esto.
while(reader.Read() != false)
{
Console.WriteLine(reader.GetString(0));
}

Este bucle recuperará todas las filas del conjunto de resultados. Cuando este programa de muestra se ejecuta por primera vez, solo habrá una fila. Si lo ejecuta varias veces, encontrará una fila por cada vez que se haya ejecutado.

Paso 12 Desasignación de recursos

Aquí desasignará todos los recursos que utilizó anteriormente. En este caso, sus recursos son cada uno de los objetos que utilizó anteriormente, siendo los objetos Conexión, Declaración y Conjunto de resultados. Para cada bloque de prueba anidado, tendrá un bloque finalmente, que realiza el método de cierre correspondiente. Estas declaraciones se han mostrado en el contexto anterior, pero aquí están las llamadas de limpieza en secuencia desde el código.
} finally {
reader.Close ();
}
} finally {
command.Close ();
}
} catch (Exception exception) {
Console.WriteLine (“Exception : ” + exception.ToString ());
} finally {
connection.Close ();
}

Paso 13 Captura final y finalmente bloqueo

El último bloque contiene un bloque de captura y un bloque final. El bloque de captura determina qué hacer si se lanzó una excepción en el código anterior. En este caso, basta con mostrar la excepción a la salida estándar. El bloque finalmente se ejecutará independientemente de que se lance una excepción. Aquí desasignaremos nuestro objeto Connection. En este ejemplo, si su objeto Connection arroja una excepción por alguna razón, se “arroja” fuera del método. En una situación normal, puede agregar otro bloque try catch o declarar este programa como un método separado y manejarlo en otro lugar.
} catch (Exception exception) {
WriteLine(“Exception : ” + exception.ToString());
} finally {
connection.Close();
}

Paso 14: compilación de su solicitud

Si su ADO.NET está instalado correctamente, debería tener acceso al c#, llamado csc. Para compilar, debe usar el compilador csc. El formato tiene este aspecto:
csc {main_class.cs (punto de entrada al programa)}
En este caso, escribiría:
csc HelloWorldADO.cs
No debería ver advertencias y, una vez completado, se habrá generado un archivo .class. Su directorio debe contener:
HelloWorldADO.cs
HelloWorldADO.NET.a

Paso 15 Ejecutando el programa

Ejecutar el programa es tan simple como escribir "java {nombre del ejecutable}". En este caso, tendría "HelloWorldADO" ya que es el punto de entrada a su programa. Si todo funciona como se esperaba, debería ver algo como lo siguiente como se muestra en un símbolo del sistema de Windows:

¡Hecho!

¡Felicidades! Acaba de terminar su primera aplicación ADO.NET. Ahora que ha "ido y vuelto al disco" con ADO.NET, se le puede animar a examinar algunas muestras más sofisticadas. El resto del Demostraciones de ADO.NET se convierte en un tutorial paso a paso, que incluye confirmaciones y reversiones de transacciones, y relaciones multidireccionales entre tablas. Cada muestra debe ser rápida, informativa y completamente desechable cuando haya terminado.