Cómo conectarse a una base de datos y ejecutar un comando mediante ADO.NET 2005 y Visual C# 2005 o mediante ADO.NET y Visual C#.

Para una versión de Microsoft Visual Basic .NET de este artículo, consulte
301075 .
Para una versión de Microsoft Visual J# .NET de este artículo, consulte
322045 .

En este artículo se refiere a los siguientes espacios de nombres de biblioteca de clases de Microsoft.NET Framework:
  • System.Data
  • System.Data.SqlClient

Resumen

En este artículo paso a paso se muestra cómo utilizar ADO.NET 2005 o ADO.NET para conectarse a una base de datos y ejecutar un comando.

Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que necesita:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio 2005 o Microsoft Visual Studio .NET
En este artículo se supone que está familiarizado con los temas siguientes:
  • Terminología de base de datos
  • Lenguaje de consulta estructurado (SQL)

Cómo ejecutar un comando

Los comandos se emiten contra las bases de datos para realizar acciones en almacenes de datos e incluir cualquier instrucción que se pueda emitir contra una base de datos. Puede utilizar el objeto OleDbCommand o SqlCommand clases para obtener un comando en el almacén de datos y OleDbCommand puede ser especifico para el almacén de datos. Este artículo muestra la clase SqlClient (para conectar con un equipo que está ejecutando Microsoft SQL Server) y la clase OleDb (para cualquier base de datos que tenga un controlador OLE DB u ODBC disponible) dentro de ADO.NET. Sin embargo, el código generalmente es el mismo para ambos.

Con ADO, puede emitir comandos mediante el comando, la conexióno el objeto Recordset . En ADO.NET, sólo los objetos Command (SqlCommand o OleDbCommand) ejecutan comandos.

Para ejecutar un comando, siga estos pasos:
  1. Siga estos pasos para crear una nueva aplicación de consola en Microsoft Visual C# 2005 o en Microsoft Visual C#. NET:
    1. Inicie Microsoft Visual Studio 2005 o Microsoft Visual Studio. NET.
    2. En el menú archivo, elija nuevo y, a continuación, haga clic en proyecto.
    3. En el cuadro de diálogo Nuevo proyecto, haga clic en Proyectos de Visual C# en Tipos de proyecto y, a continuación, haga clic en Aplicación de consola en plantillas.

      Nota: En Visual Studio 2005, haga clic en Visual C# en Tipos de proyecto , en el cuadro de diálogo Nuevo proyecto y, a continuación, haga clic en Aplicación de consola en plantillas.
  2. Asegúrese de que el proyecto contiene una referencia al espacio de nombres System.Data y agregue una referencia si no es así.
  3. Utilice la instrucción using en los espacios de nombres System y System.Data para que no tenga que suministrar declaraciones de dichos espacios de nombres más adelante en el código. También puede incluir System.Data.SqlClient o System.Data.OleDb, dependiendo de cuál esté utilizando.
    using System;using System.Data;
    using System.Data.SqlClient;

  4. Antes de poder crear una conexión a una base de datos, debe tener una cadena de conexión. Cadenas de conexión contienen toda la información que necesita para establecer una conexión de base de datos, incluyendo el nombre del servidor, el nombre de la base de datos, el identificador de usuario y la contraseña. Por ejemplo, la cadena de conexión siguiente señala a un equipo local que ejecuta SQL Server:

    Para las conexiones OleDb:

    Nota: Id. de usuario < UID > debe tener los permisos adecuados para realizar estas operaciones en la base de datos.
    Provider=SQLOLEDB.1;User ID=<UID>;Initial Catalog=pubs;Data Source=(local)
    Para las conexiones de SqlClient:
    User ID=<UID>;Initial Catalog=pubs;Data Source=(local)
    Nota: Si necesita más ayuda para determinar la cadena de conexión para la base de datos, busque "ConnectionString" en la biblioteca de Microsoft Developer Network (MSDN) en:
  5. Visual Studio crea una clase estática y un procedimiento Main() vacío. Declare una variable de cadena y almacene la cadena de conexión apropiada para la base de datos en este procedimiento.

    Nota: Id. de usuario < UID > debe tener los permisos adecuados para realizar estas operaciones en la base de datos.
    class Class1{
    static void Main(string[] args)
    {
    string sConnectionString =
    "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
    }
    }

  6. Con esta cadena de conexión, cree un nuevo objeto OleDbConnection o SqlConnection y llamar a su método Open para establecer una conexión con la base de datos:
    SqlConnection objConn = new SqlConnection(sConnectionString);objConn.Open();

  7. Crear un objeto SqlCommand o OleDbCommand y pase el comando que desea ejecutar y el objeto de conexión que creó en el paso anterior. El código de ejemplo siguiente pasa la instrucción INSERT:
    string sSQL = "INSERT INTO Employee " +   "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 
    "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";
    SqlCommand objCmd = new SqlCommand(sSQL,objConn);

  8. Después de crear el objeto SqlCommand o OleDbCommand , puede llamar al método ExecuteNonQuery para ejecutar el comando que representa. ExecuteNonQuery está diseñado para comandos que no devuelven ningún resultado (como las instrucciones DELETE, UPDATE e INSERT). Si la instrucción se ejecuta sin desencadenar una excepción (vea el código siguiente), el comando se ha ejecutado correctamente en la base de datos.
    objCmd.ExecuteNonQuery();
  9. Guardar el proyecto. En el menú Depurar , haga clic en Iniciar para ejecutar el comando contra la base de datos.

Cómo utilizar parámetros

Cuando ejecuta los comandos contra una base de datos (tales como la UPDATE, INSERT y DELETE instrucciones o llamadas a procedimientos almacenan), estos comandos suelen tener parámetros. Esto permite que el comando se crea una vez y ejecutarse varias veces con diferentes valores que se insertan en lugar de parámetros. Considere la instrucción DELETE correspondiente a la instrucción INSERT que se utiliza en la sección anterior:
string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id"
El nombre de parámetro ("@emp_id") de esta instrucción DELETE representa un parámetro que puede reemplazar con valores diferentes cada vez que ejecute el comando.

Para utilizar parámetros con el comando, siga estos pasos:
  1. Cree un objeto OleDbConnection o SqlConnection , como hizo en la sección "cómo ejecutar un comando".
  2. Reemplace los valores por marcadores de posición (por ejemplo, "@emp_id" o "@fname") para que el texto del comando utilice parámetros. Vea la instrucción DELETE antes de estos pasos para obtener un ejemplo.
  3. Cree un objeto OleDbCommand o SqlCommand y pase el objeto de conexión que creó en el primer paso y el texto del comando que contiene los marcadores de posición de parámetro.
  4. Para cada parámetro, agregue un objeto de parámetro a la colección de parámetros del objeto command. Para cada parámetro, debe especificar un nombre y tipo de datos.
    objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
  5. Los procedimientos almacenados pueden tener parámetros que devuelvan valores y parámetros de salida. También debe establecer un valor para cada parámetro de entrada para poder ejecutar la consulta:
    objCmd.Parameters["@emp_id"].Value = "MSD12923F";
  6. Ejecute la consulta como sigue:
    try {
    objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e)
    {
    Console.WriteLine(e.Message);
    }
    Console.WriteLine("Record Deleted");

Lista de código completa

Nota: Debe cambiar User ID = < UID > a los valores correctos antes de ejecutar este código. Asegúrese de que < UID > tiene los permisos apropiados para realizar esta operación en la base de datos.
using System;using System.Data;
using System.Data.SqlClient;

/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
AddRecord();
RemoveRecord();
Pause();
}

static void Pause()
{
Console.WriteLine("Press Enter To Continue....");
Console.ReadLine();
}

static void AddRecord()
{
string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
SqlConnection objConn = new SqlConnection(sConnectionString);
objConn.Open();
string sSQL = "INSERT INTO Employee " +
"(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " +
"VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";
SqlCommand objCmd = new SqlCommand(sSQL,objConn);
try
{
objCmd.ExecuteNonQuery();
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Record Added");
}

static void RemoveRecord()
{
string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
SqlConnection objConn = new SqlConnection(sConnectionString);
objConn.Open();
string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id";
SqlCommand objCmd = new SqlCommand(sSQL,objConn);
objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
objCmd.Parameters["@emp_id"].Value = "MSD12923F";
try
{
objCmd.ExecuteNonQuery();
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Record Deleted");
}
}

Referencias

Para obtener más información acerca de cómo utilizar ADO.NET, comandos de base de datos y procedimientos almacenados, visite los siguientes sitios Web de Microsoft:
SQL Server 2000 almacena procedimientos
http://msdn2.microsoft.com/en-us/library/aa214299(SQL.80).aspx

"Diving into Data Access," columna de MSDN Voices
http://msdn2.microsoft.com/en-us/library/ms810295.aspx

ADO.NET para el programador de ADO
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

MSDN Online .NET Developer Center
http://msdn.microsoft.com/net
Para obtener más información, consulte el libro siguiente:
Sharp, John y Jon Jagger. Microsoft Visual C# .NET paso a paso. Microsoft Press, 2003.
Para obtener más información, consulte el siguiente curso de Microsoft Training & Certification:
Propiedades

Id. de artículo: 306636 - Última revisión: 22 ene. 2017 - Revisión: 2

Comentarios