Você está na página 1de 60

Microsoft SQLServer Express 2008

Tutorial bsico
M.C. Andrs Gerardo Fuentes Covarrubias M.C. Ricardo Fuentes Covarrubias

Pasos bsicos
Instalar .Net FW 3.5 Instalar PowerShell Instalar SQLServer Express 2008 con Management Studio incluido

A. Gerardo Fuentes Covarrubias

Manejo de bases de datos SQL con el shell sqlcmd


Para empezar a utilizar sqlcmd, primero debe iniciar la utilidad y conectarse a una instancia de SQL Server. Puede conectarse a una instancia con nombre o a la instancia predeterminada. El primer paso consiste en iniciar la utilidad sqlcmd.
La Autenticacin de Windows es el valor predeterminado para sqlcmd. Para utilizar la Autenticacin de SQL Server, debe especificar un nombre de usuario y una contrasea mediante las opciones -U y -P.

De forma predeterminada, SQL Server Express instala una instancia con nombre sqlexpress.
Pruebe con el comando: >sqlcmd S localhost\SQLExpress
A. Gerardo Fuentes Covarrubias 3

Para iniciar la utilidad sqlcmd y conectar con una instancia predeterminada de SQL Server:
En el men Inicio, haga clic en Ejecutar. En el cuadro Abrir, escriba cmd y, a continuacin, haga clic en Aceptar para abrir una ventana del smbolo del sistema. En el smbolo del sistema, escriba sqlcmd. Presione <ENTER>. Ahora tiene una conexin de confianza con la instancia predeterminada de SQL Server que se est ejecutando en el equipo. 1> es el comando sqlcmd que especifica el nmero de lnea. Cada vez que presione ENTER, el nmero se incrementar en uno. Para finalizar la sesin de sqlcmd, escriba EXIT en el comando sqlcmd.

A. Gerardo Fuentes Covarrubias

Para iniciar la utilidad sqlcmd y conectar con una instancia con nombre de SQL Server:
Abra una ventana del smbolo del sistema y escriba >sqlcmd S miServidor\nombreDeInstancia. Reemplace miServidor\nombreDeInstancia con el nombre del equipo y la instancia de SQL Server a la que desea conectarse. Por ejemplo: >sqlcmd S localhost\SQLExpress

A. Gerardo Fuentes Covarrubias

Presione ENTRAR. El comando sqlcmd (1>) indica que est conectado con la instancia especificada de SQL Server. Las instrucciones Transact-SQL escritas estn almacenadas en un bfer. Se ejecutan como un lote cuando se encuentra el comando GO.

A. Gerardo Fuentes Covarrubias

Ejercicio 1. Crear una BD y una tabla relacionada


Crear la base de datos
CREATE DATABASE <nombre_base_datos>

Abrir el contexto de la base de datos


USE <nombre_base_datos>

Crear una tabla en el contexto actual


CREATE TABLE <nombre_tabla> ( campo1 tipo<[long]> NOT NULL, campo2 tipo<[long]> PRIMARY KEY NOT NULL )

Introducir valores a la base datos mediante la tabla creada


INSERT INTO <nombre_tabla>
VALUES ([VALORES SEPARADOS POR COMAS])

Una lnea por cada registro a introducir

Ejecute con el comando GO


A. Gerardo Fuentes Covarrubias 7

Ejercicio 1. Crear una BD y una tabla relacionada


Cierre la base de datos con el comando
Close

Salga del interprete de comandos con


Exit

A. Gerardo Fuentes Covarrubias

Ejercicio 2. Mostrar una BD mediante un control Grid


Varias cosas son necesarias para acceder una base de datos en Sql:
Un adaptador de datos Una conexin a la base de datos Una cadena de conexin que guardar la ruta hacia la base de datos y el nombre de esta Una cadena para almacenar los comandos Un objeto para manejar la conexin con la BD

A. Gerardo Fuentes Covarrubias

Ejercicio 2. Mostrar una BD mediante un control Grid


Cdigo:
private private private private private private SqlDataAdapter sqlAd; DataSet dataSt; SqlConnection Conexion; string cadenaConexion; string consultaCmd; BindingSource nombreBS;
//Adaptador de datos //Estructura de datos para almacenar cada registro //Objeto tipo conexin //Ruta hacia la base de datos //Cadena para almacenar los comandos sqlcmd //Objeto para manejar la conexin con la BD

A. Gerardo Fuentes Covarrubias

10

Ejercicio 2. Mostrar una BD mediante un control Grid


Todos los mtodos y propiedades son manejados por medio de la subclase Data. Agregue una referencia a el namespace correspondiente. using System.Data.SqlClient;

A. Gerardo Fuentes Covarrubias

11

Ejercicio 2. Mostrar una BD mediante un control Grid


La operacin inicial ser conectarse a la base de datos, la cual ha sido creada previamente junto con al menos una tabla, el cdigo es:
public void Conectar() { try { cadenaConexion = "Data Source=.\\SQLEXPRESS;Initial Catalog=datalogger;Integrated Security=True"; Conexion = new SqlConnection(cadenaConexion); Conexion.Open(); } catch (SqlException ex) { MessageBox.Show("No se pudo conectar al servidor"); } } A. Gerardo Fuentes Covarrubias

12

Ejercicio 2. Mostrar una BD mediante un control Grid


El procedimiento para hacer una consulta involucra:
Hacer la conexin a la BD Crear el comando correspondiente para el Shell Crear un adaptador de datos y vincularlo a la conexin actual Crear un nuevo dataset para vincularlo con el control Grid Crear el objeto para referenciar la base de datos Finalmente, obtener los registros de la BD y asignarlos al control Grid, este llenar la vista en la forma hasta obtener el ultimo de los registros y los separar por campos

A. Gerardo Fuentes Covarrubias

13

Ejercicio 2. Mostrar una BD mediante un control Grid


Cdigo resultante:
private void Form1_Load(object sender, EventArgs e) { Conectar(); consultaCmd = "SELECT * From cuentas"; sqlAd = new SqlDataAdapter(consultaCmd, Conexion); dataSt = new DataSet(); nombreBS = new BindingSource(); sqlAd.Fill(dataSt, "ncta"); nombreBS.DataSource = dataSt; nombreBS.DataMember = "ncta"; dataGridView1.DataSource = nombreBS; }
A. Gerardo Fuentes Covarrubias 14

Ejercicio 2. Mostrar una BD mediante un control Grid


El diseador para la forma ser:

A. Gerardo Fuentes Covarrubias

15

Posibles errores:
Es comn que las BD dejen conexiones abiertas, en cuyo caso habr que dar mantenimiento, esto puede ser mediante el Management Studio o por medio del slqCMD desde la lnea de ordenes.

A. Gerardo Fuentes Covarrubias

16

Posibles errores:(tpico)
Database bd_telefonos cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details. Errores de acceso impiden que una BD sea correctamente cerrada en su conexin lo cual la mantiene en un estado de transaccin pendiente. La conexin no saldr de ese estado hasta que sea restablecida.

A. Gerardo Fuentes Covarrubias

17

Posibles errores:(tpico)
Use el comando:
SELECT name, state_desc FROM sys.databases Para conocer el estado que guardan las bases de datos relacionadas con una instancia en particular, la diapositiva siguiente ilustra el resultado del comando.

A. Gerardo Fuentes Covarrubias

18

Posibles errores:(tpico)
El siguiente comando restablece el estado de la Base de Datos y la vuelve a poner en lnea:
ALTER DATABASE bd_telefonos SET ONLINE
Lo cual soluciona el problema, este procedimiento se puede llevar a cabo desde el shell, desde el Management Studio o bien vinculandolo a un botn en tiempo de ejecucin desde nuestro programa en VC# Studio 2010.

A. Gerardo Fuentes Covarrubias

19

Posibles errores:(tpico)

A. Gerardo Fuentes Covarrubias

20

Utilizacin de controles externos


El desarrollo de estas aplicaciones se divide en los siguientes pasos:
1. 2. 3.

4. 5.

6.

Crear la base de datos con SQL Server, si aun no esta creada Crear una aplicacin Windows. Use Visual Studio Establecer la conexin con el origen de datos. Esto incluye crear una consulta que permita llenar el conjunto de datos a partir de la base de datos Crear el conjunto de datos Agregar el control rejilla (Grid) al formulario y enlazarlo a los datos Agregar cdigo para llenar el conjunto de datos y cdigo para enviar los cambios del conjunto de datos de vuelta a la base de datos
A. Gerardo Fuentes Covarrubias 21

Arquitectura de componentes
Conjunto de datos DataAdapter SelectCommand InsertCommand DeleteCommand UpdateCommand Base de datos Aplicacin Connection

A. Gerardo Fuentes Covarrubias

22

Controles externos

1y2

Inicializar los componentes de la caja de herramientas.

Agregar los componentes necesarios para SQLServer

A. Gerardo Fuentes Covarrubias

23

Controles externos

1
A. Gerardo Fuentes Covarrubias

2
24

3 Agregando los controles externos


Agregue al formulario un control adaptador de datos. Tmelo del cuadro de herramientas y arrstrelo al formulario principal La accin anterior abrir el Asistente para la configuracin del adaptador de datos

A. Gerardo Fuentes Covarrubias

25

Ahora el formulario tendr esta forma incluyendo el control y el asistente

A. Gerardo Fuentes Covarrubias

26

Procedimiento
Siga las instrucciones del asistente y configure una nueva conexin para ese adaptador de datos.
2

A. Gerardo Fuentes Covarrubias

27

A. Gerardo Fuentes Covarrubias

28

A. Gerardo Fuentes Covarrubias

29

Aparece el cuadro del generador de consultas y automticamente el dialogo de Agregar tabla

Presione el botn Agregar

A. Gerardo Fuentes Covarrubias

30

Seleccione todos los campos a generar la consulta clickeando sobre el checkbox

Automticamente aparecern los campos y la instruccin de transactions-sql Presione el botn de Aceptar para generar las instrucciones de transactions-sql

A. Gerardo Fuentes Covarrubias

31

2
A. Gerardo Fuentes Covarrubias 32

Windows actualizar su system tray a la configuracin actual y crear una nueva conexin
A. Gerardo Fuentes Covarrubias 33

Creando el conjunto de datos (dataSet)


Una forma sencilla de generar automticamente el dataSet basndose en la consulta (Query) que se ha creado es usar el asistente de VC#. Use Datos-Generar conjunto de datos

Asegurarse que la casilla Agregar est marcada, despus click en el botn Aceptar. VC# generar un conjunto de datos denominado dataSet11 de la clase DataSet1

El System Tray se actualizar de nuevo con el nuevo dataSet


A. Gerardo Fuentes Covarrubias 34

Agregar el control Grid al formulario actual


Ignore el dialogo Tareas de DataGridView y dirijase al cuadro de propiedades debajo del explorador de soluciones

A. Gerardo Fuentes Covarrubias

35

Configurar el control Grid del formulario actual

1. Modifique la propiedad DataSource

A. Gerardo Fuentes Covarrubias

36

Configurar el control Grid del formulario actual

2. Modifique la propiedad DataMember y asgnelo a la tabla de la base de datos. Deber aparecer el encabezado en el DataGridView
A. Gerardo Fuentes Covarrubias 37

Aadir cdigo para actualizar el GridView


Tambin aadir un evento al formulario para actualizar el origen de datos al momento de cerrar el formulario, as los cambios efectuados en los renglones del GridView se actualizarn en la base de datos al cerrar el formulario.

A. Gerardo Fuentes Covarrubias

38

Aadir cdigo para actualizar el GridView


private void Form1_Load(object sender, EventArgs e) { dataSet11.Clear(); sqlDataAdapter1.Fill(dataSet11); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (dataSet11.HasChanges()) { sqlDataAdapter1.Update(dataSet11); MessageBox.Show("Origen de datos actualizado"); } }

A. Gerardo Fuentes Covarrubias

39

Control BindingSource
Un objeto BindingSource hace de puente entre el control y el conjunto de datos, simplificando la conexin control-origen de datos, la actualizacin del contenido actual, la notificacin de cambios y otros servicios. Control en un formulario

BindingSource

Origen de datos

A. Gerardo Fuentes Covarrubias

40

Realizada la conexin control-origen de datos, toda interaccin con los datos incluyendo la navegacin, ordenacin, filtrado y actualizacin, puede ser llevada a cabo usando la funcionalidad del componente BindingSource. El tipo del origen de datos subyacente se fija a travs de uno de los siguientes mecanismos:
Usando el mtodo Add para aadir un elemento al componente BindingSource. Asignando a su propiedad DataSource una lista, un objeto o un tipo

Un componente BindingSource permite enlazar universalmente todos los controles de formularios Windows a orgenes de datos muy diversos.
A. Gerardo Fuentes Covarrubias 41

Crear un ArrayList y vincularlo a una forma


Crear un ArrayList Vincularlo con una forma mediante BindingSource a un juego de textBox inicializando en Form_Loader Use botones para moverse por el formulario

A. Gerardo Fuentes Covarrubias

42

Formulario a crear

A. Gerardo Fuentes Covarrubias

43

Cdigo vinculado
Namespace adicional: using System.Collections; Inicializacin de objetos: private BindingSource bindingSource1; ArrayList listaTemperaturas;

A. Gerardo Fuentes Covarrubias

44

Cdigo:(Agregar una clase)


class tipoDatalog { private string voltaje; private string temperatura; private string fecha; private string hora; public tipoDatalog(string volt, string temp, string fech, string hor) { voltaje = volt; temperatura = temp; fecha = fech; hora = hor; }
A. Gerardo Fuentes Covarrubias 45

public string Voltaje { get { return voltaje; } } public string Temperatura { get { return temperatura; } } public string Fecha { get { return fecha; } } public string Hora { get { return hora;} } }
A. Gerardo Fuentes Covarrubias 46

Cdigo:(Agregar una clase)

Cdigo:
private void Form1_Load(object sender, EventArgs e) { listaTemperaturas = new ArrayList(); listaTemperaturas.Add(new tipoDatalog(txtVoltaje.Text, txtTemperatura.Text, txtFecha.Text,txtHora.Text)); bindingSource1=new BindingSource(); bindingSource1.DataSource=listaTemperaturas; txtVoltaje.DataBindings.Add("Text",bindingSource1,Voltaje"); txtTemperatura.DataBindings.Add("Text",bindingSource1,Temperatura"); txtFecha.DataBindings.Add("Text",bindingSource1,Fecha"); txtHora.DataBindings.Add(Text,bindingSource1,Hora); }

A. Gerardo Fuentes Covarrubias

47

Cdigo:
private void btAgregar_Click(object sender, EventArgs e) { listaTemperaturas.Add(new tipoDatalog(txtVoltaje.Text,txtTemperatura.Text, txtFecha.Text,txtHora.Text)); txtVoltaje.Text=""; txtTemperatura.Text=""; txtFecha.Text = ""; txtHora.Text = ""; } private void btSiguiente_Click(object sender, EventArgs e) { bindingSource1.MoveNext(); } private void btAnterior_Click(object sender, EventArgs e) { bindingSource1.MovePrevious(); A. Gerardo Fuentes Covarrubias }

48

BindingSource a una Base de Datos


Crear una base de datos y una tabla Crear una forma Crear un origen de datos Crear un DataSet Enlazar el DataSet a la forma por medio de BindingSource

A. Gerardo Fuentes Covarrubias

49

Formulario a crear

A. Gerardo Fuentes Covarrubias

50

Agregue un origen de datos


Data -> Show Data Source -> Add New Data Source
Resultado de la creacin del nuevo origen de datos

A. Gerardo Fuentes Covarrubias

51

Vincular las cajas de texto del formulario con el conjunto de datos


Situarse en la vista de diseo del formulario Seleccione cada uno de los TextBox y modifique la propiedad DataBindings>text Vinclelo con el campo correcto de la tabla Repita el procedimiento para cada uno de los TextBox a vincular

A. Gerardo Fuentes Covarrubias

52

.
La propiedad DataBindings de un control da acceso a la coleccin ControlBindingsCollections que permite almacenar los vnculos que mantiene ese control con los orgenes de datos desde los cuales quiere proveerse lo que tambin le permitir interactuar de forma directa con ellos. Doble click en el formulario principal y se generar de manera automatica el cdigo para rellenar los textBox con el registro inicial, aunque no puede hacerse algo ya que no se han implementado los controles para actualizar, insertar o borrar registros.
A. Gerardo Fuentes Covarrubias 53

.
namespace sqlBindingBD { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'dirEmpresaDataSet.directorio' //table. You can move, or remove it, as needed. this.directorioTableAdapter.Fill(this.dirEmpresaDataSet.directorio); } } }
A. Gerardo Fuentes Covarrubias 54

Agregar controles para posicionarse en la tabla

A. Gerardo Fuentes Covarrubias

55

Agregar un mtodo para mostrar la posicin actual


private void Form1_Load(object sender, EventArgs e) { this.directorioTableAdapter.Fill(this.dirEmpresaDataSet.directorio); mostrarPosicion(); } private void mostrarPosicion() { int totalRegistros = directorioBindingSource.Count; int posicion; if (totalRegistros == 0) etPosicion.Text = "0 Registros"; else { posicion = directorioBindingSource.Position + 1; etPosicion.Text = posicion.ToString() + " de " + totalRegistros.ToString(); } } A. Gerardo Fuentes Covarrubias 56

Cdigo de posicionamiento
private void btPrimero_Click(object sender, EventArgs e) { directorioBindingSource.Position = 0; mostrarPosicion(); } private void btUltimo_Click(object sender, EventArgs e) { directorioBindingSource.Position = directorioBindingSource.Count-1; mostrarPosicion(); } private void btSiguiente_Click(object sender, EventArgs e) { directorioBindingSource.Position += 1; mostrarPosicion(); } private void btAnterior_Click(object sender, EventArgs e) { directorioBindingSource.Position -= 1; mostrarPosicion(); }

A. Gerardo Fuentes Covarrubias

57

Ahora se pueden agregar registros


private void button1_Click(object sender, EventArgs e) { DataTable tabla = dirEmpresaDataSet.directorio; DataRowCollection filas = tabla.Rows; DataRow nuevoRegistro; try { nuevoRegistro = tabla.NewRow(); nuevoRegistro[0] = "Nombre"; nuevoRegistro[1] = "Direccion"; nuevoRegistro[2] = "Telefono"; filas.Add(nuevoRegistro); btUltimo.PerformClick(); mostrarPosicion(); txtNombre.Focus(); } catch(ConstraintException ex) { MessageBox.Show(ex.Message); } } A. Gerardo Fuentes Covarrubias 58

Tambin se pueden borrar registros


private void btBorrar_Click(object sender, EventArgs e) { DataRowView registroActual; string nuevaLinea = Environment.NewLine; if (MessageBox.Show("Desea borrar el registro actual?" + nuevaLinea, "Buscar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { registroActual = ((DataRowView)directorioBindingSource.Current); registroActual.Row.Delete(); mostrarPosicion(); } }
A. Gerardo Fuentes Covarrubias 59

Finalmente actualizar la base de datos


private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (dirEmpresaDataSet.HasChanges()) { directorioTableAdapter.Update(dirEmpresaDataSet.directorio); MessageBox.Show("Base de datos actualizada"); } }

A. Gerardo Fuentes Covarrubias

60

Você também pode gostar