sábado, 9 de mayo de 2015

PROCEDIMIENTOS ALMACENADOS



 
PROCEDIMIENTO ALMACENADO

 
Un procedimiento almacenado de SQL Server es un grupo de una o varias instrucciones Transact-SQL o una referencia a un método de Common Runtime Language (CLR) de Microsoft .NET Framework. Los procedimientos se asemejan a las construcciones de otros lenguajes de programación, porque pueden:
  • Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al programa que realiza la llamada.
  • Contener instrucciones de programación que realicen operaciones en la base de datos. Entre otras, pueden contener llamadas a otros procedimientos.
  • Devolver un valor de estado a un programa que realiza una llamada para indicar si la operación se ha realizado correctamente o se han producido errores, y el motivo de estos.
Ventajas de usar procedimientos almacenados
  •  Mayor seguridad
  • Reutilización del código
  • Mantenimiento más sencillo
  • Rendimiento mejorado


 
 
Sentencias preparadas
 

Las sentencias preparadas de JDBC permiten la “precompilación” del código SQL antes de ser ejecutado, permitiendo consultas o actualizaciones más eficientes. En el momento de compilar la sentencia SQL, se analiza cuál es la estrategia adecuada según las tablas, las columnas, los índices y las condiciones de búsqueda implicados. Este proceso, obviamente, consume tiempo de procesador, pero al realizar la compilación una sola vez, se logra mejorar el rendimiento en siguientes consultas iguales con valores diferentes.
 
Otra ventaja de las sentencias preparadas es que permiten la parametrización: la sentencia SQL se escribe una vez, indicando las posiciones de los datos que van a cambiar y, cada vez que se utilice, le proporcionaremos los argumentos necesarios que serán sustituidos en los lugares correspondientes. Los parámetros se especifican con el carácter ‘?’.

public class Actualizacion{
private PreparedStatement sentencia;
 
 
public void prepararInsercion(){
String sql = "insert into personas values ( ?, ? ,? )";
sentencia = conexion.prepareStatement(sql);
}
 
 
public void insertarPersona(String nombre, dirección, telefono)
{
sentencia.setString(1, nombre);
sentencia.setString(2, direccion);
sentencia.setString(3, telefono);
sentencia.executeUpdate();
}
}

Al utilizar esta clase, obviamente, deberemos llamar primero al método que prepara la inserción, y posteriormente llamar tantas veces como sea necesario al método insertarPersona.

Se definen tres parámetros en la sentencia SQL, a los cuales se hace referencia mediante números enteros consecutivos:

String sql = "insert into personas values ( ?, ? ,? )";

La clase PreparedStatement incluye un conjunto de operaciones de la forma setXXXX(), donde XXXX es el tipo de dato para los campos de la tabla. Una de esas operaciones es precisamente setString() que inserta la variable en un campo de tipo cadena.
 
 
TRANSACCIÓN
 




  
Una transacción es una interacción con una estructura de datos compleja, compuesta por varios procesos que se han de aplicar uno después del otro. La transacción debe realizarse de una sola vez y sin que la estructura a medio manipular pueda ser alcanzada por el resto del sistema hasta que se hayan finalizado todos sus procesos.
 

Propiedades

Las transacciones deben cumplir cuatro propiedades ACID:
  1. Atomicidad (Atomicity): es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias.
  2. Consistencia (Consistency): es la propiedad que asegura que sólo se empieza aquello que se puede acabar. Por lo tanto, se ejecutan aquellas operaciones que no van a romper la reglas y directrices de integridad de la base de datos.
  3. Aislamiento (Isolation): es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información nunca generará ningún tipo de error.
  4. Permanencia (Durability): es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.
La forma algorítmica que suelen tener las transacciones es la siguiente:
iniciar transacción (lista de recursos a bloquear)
ejecución de las operaciones individuales.
if (todo_ok){
 aplicar_cambios
}
else{
 cancelar_cambios
}
En cualquier momento, el programa podría decidir que es necesario hacer fallar la transacción, con lo que el sistema deberá revertir todos los cambios hechos por las operaciones ya hechas. En el lenguaje SQL se denomina COMMIT a aplicar_cambios y ROLLBACK a cancelar_cambios.
Las transacciones suelen verse implementadas en sistemas de bases de datos y, más recientemente, se han visto incorporadas a como gestiona un sistema operativo la interacción con un sistema de archivos (como varias características de las bases de datos, debido a que son muy similares arquitectónicamente).

 

Crear conexiones a bases de datos de Access

Visual Studio .NET 2003
Para conectarse a una base de datos de Access, utilice el Proveedor OLE DB de Microsoft Jet 4.0.
Nota de seguridad   El almacenamiento de los detalles de la cadena de conexión (como el nombre de servidor, el nombre de usuario y la contraseña) puede afectar a la seguridad de la aplicación. El uso de la Seguridad integrada de Windows es un modo más seguro de controlar el acceso a una base de datos. Para obtener más información, vea Seguridad de bases de datos.
Existen dos maneras de conectarse a una base de datos de Access:
  • Visualmente, con herramientas de tiempo de diseño.
  • Mediante programación.

Conectar a una base de datos de Access en el Explorador de servidores

El establecimiento de una conexión con una base de datos de Access en el Explorador de servidores permite crear fácilmente objetos OleDbConnection, OleDbDataAdapter y OleDbCommand arrastrando objetos de datos desde el Explorador de servidores hasta los formularios o diseñadores.
Para crear una conexión en el Explorador de servidores
  1. En el Explorador de servidores, haga clic con el botón secundario en Conexiones de datos y, a continuación, en Agregar conexión.
  2. En el cuadro de diálogo Propiedades de vínculo de datos, elija la ficha Proveedor.
  3. Haga clic en Proveedor OLE DB de Microsoft Jet 4.0 y después en Siguiente.
  4. Haga clic en el botón de puntos suspensivos (...) para buscar el archivo de Microsoft Access (.mdb) al que desea obtener acceso.
  5. Escriba el Id. de usuario que desea utilizar para la autenticación cuando inicie una sesión en el origen de datos.
  6. Escriba la Contraseña que desea utilizar para la autenticación cuando inicie una sesión con el origen de datos.
  7. Haga clic en Aceptar.

Conectar con una base de datos de Access desde la aplicación

La creación de conexiones a orígenes de datos desde la aplicación se puede llevar a cabo visualmente utilizando las herramientas de tiempo de diseño de Visual Studio .NET (incluidos el Explorador de servidores y el Cuadro de herramientas) o mediante programación, creando objetos de conexión a datos en el código.

Conectar a una base de datos de Access Visualmente

Visual Studio admite la creación de objetos de datos arrastrando elementos desde el Explorador de servidores o la ficha Datos del Cuadro de herramientas hasta el formulario o diseñador.
Para crear una conexión desde el Explorador de servidores
  1. Cree una Conexión de datos en el Explorador de servidores para la base de datos de Access. Para obtener más información, vea la sección anterior titulada "Conectar a una base de datos de Access en el Explorador de servidores".
  2. Arrastre la conexión desde el Explorador de servidores hasta el formulario o diseñador.
Aparecerá un objeto OleDbConnection en la bandeja de componentes.
  1. Avance hasta la sección "Pasos siguientes" que aparece más adelante en este tema.
Para crear una conexión desde la ficha Datos del Cuadro de herramientas
  1. Arrastre un objeto OleDbConnection hasta el formulario o diseñador.
Aparecerá un objeto OleDbConnection no configurado en la bandeja de componentes.
  1. En la ventana Propiedades, haga clic en la propiedad ConnectionString.
  2. Siga uno de los procedimientos siguientes:
    • Haga clic en una conexión existente en la lista desplegable.
O bien
    • Haga clic en Nueva conexión para abrir Propiedades de vínculo de datos (Cuadro de diálogo) y configure una conexión nueva.
  1. Avance hasta la sección "Pasos siguientes" que aparece más adelante en este tema.

Conectar a una base de datos de Access mediante programación

Puede crear un objeto OleDbConnection directamente en el código.
Para crear una conexión mediante programación entre la aplicación y una base de datos de Access
  • El código siguiente crea un objeto OleDbConnection, define la propiedad OleDbConnection.ConnectionString y abre la conexión.
' Visual Basic
Public Sub ConnectToAccess()
    Dim conn As New System.Data.OleDb.OleDbConnection()
    ' TODO: Modify the connection string and include any
    ' additional required properties for your database.
    conn.ConnectionString = & _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
    "C:\Documents and Settings\username\My Documents\dbFile.mdb"
    Try
       conn.Open()
       ' Insert code to process data.
    Catch ex As Exception
       MessageBox.Show("Failed to connect to data source")
    Finally
       conn.Close()
    End Try
End Sub
 
// C#
public void ConnectToAccess()
{
    System.Data.OleDb.OleDbConnection conn = new 
        System.Data.OleDb.OleDbConnection();
    // TODO: Modify the connection string and include any
    // additional required properties for your database.
    conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
        @"Data source= C:\Documents and Settings\username\" +
        @"My Documents\AccessFile.mdb";
    try
    {
        conn.Open();
        // Insert code to process data.
    }
        catch (Exception ex)
    {
        MessageBox.Show("Failed to connect to data source");
    }
    finally
    {
        conn.Close();
    }
}

 

 Elaborado por:  Yurizbeth Prospero Barraza

No hay comentarios:

Publicar un comentario