Apuntes - Conexión a bases de datos
¿Cómo nos conectamos a la base de datos?
Primero se debe instalar el paquete System.Data.SqlClient
:
- Botón derecho sobre el proyecto
- Seleccionar Administrar Paquete NuGet
- Examinar
- Buscar System.Data.SqlClient
- Instalar
- Agregar al código fuente
using System.Data.SqlClient
Para conectarnos a la base de datos utilizamos una instancia de SqlConnection
.
SqlConnection connection; // Puente.
SqlCommand command; // Quien lleva la consulta.
SqlDataReader reader; // Quien trae los datos.
static ConexionSql()
{
connection = new SqlConnection(@"Data Source = [Nombre del servidor];
Database = [Nombre de la base de datos];
Trusted_Connection = True;");
command = new SqlCommand();
command.CommandType = CommandType.Text;
command.Connection = connection;
}
Consultar los datos de una tabla
Una opción para realizar una consulta es utilizando bloque Try-Catch-Finally
try
{
command.CommandText = "SELECT * FROM tabla";
connection.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
// Lógica
}
}
catch (Exception)
{
throw new Exception("Error de conexión a la base de datos");
}
finally
{
if (connection.State == ConnectionState.Open)
{
connection.Close();
}
}
Otra opción es usar la directiva using
que cierra automáticamente la conexión.
using (SqlConnection connection = new SqlConnection(connection))
{
connection.Open();
// Lógica
}
Manipulando los datos de una tabla
Debemos utilizar el método ExecuteNonQuery
del objeto SqlCommand
que ejecuta la sentencia y guarda los cambios en la base de datos.
IMPORTANTE
Si utilizamos la instancia de SqlCommand
como atributo, después de ejecutar el método ExecuteNonQuery
se deberá invocar al método Clear
.
Ejemplo de consulta parametrizada:
connection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandType = System.Data.CommandType.Text;
sqlCommand.Connection = connection;
sqlCommand.CommandText = "INSERT INTO tabla VALUES (@Name, @LastName, @Age)";
sqlCommand.Parameters.AddWithValue("@Name", "Juana");
sqlCommand.Parameters.AddWithValue("@LastName", "Perez");
sqlCommand.Parameters.AddWithValue("@Age", "19");
sqlCommand.ExecuteNonQuery();
sqlCommand.Parameters.Clear();