m.c. enrique ruiz diaz - manejo de una base de datos microsoft sql server desde visual c#, vía sql

25
Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz 15-Febrero-2010 1 Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía instrucciones SQL. M.C. Enrique Ruiz Díaz. Estoy titulado en la Maestría en Ciencias de la Computación, Misma que estudié en el Instituto Tecnológico de Orizaba, Ver, México. Generación 2005-2007. Visite: http://www.scribd.com/enriqueruizdiaz

Upload: enriqueruizdiaz

Post on 27-Jul-2015

851 views

Category:

Documents


1 download

DESCRIPTION

No es objetivo de este breve manual enseñar a programar ni explicar lo que son las bases de datos.Por tanto, doy por hecho que ya se poseen esos conocimientos esenciales y presento una muy breve introducción a las herramientas que se usarán en este breve tutorial que son:1) Microsoft SQL Server 2005 Express.2) Microsoft SQL Server Management Studio Express.3) Microsoft Visual C# Express 2008A continuación, me enfoco en la aportación importante de este tutorial que es el código que permite manipular una base de datos SQL Server, desde un programa de C #, vía instrucciones SQL.

TRANSCRIPT

Page 1: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 1

Manejo de una Base de Datos Microsoft SQL Server

a través de Visual C #, vía instrucciones SQL.

M.C. Enrique Ruiz Díaz.

Estoy titulado en la Maestría en Ciencias de la Computación, Misma que estudié en el Instituto Tecnológico de Orizaba, Ver, México.

Generación 2005-2007.

Visite: http://www.scribd.com/enriqueruizdiaz

Page 2: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 2

INTRODUCCIÓN.

No es objetivo de este breve manual enseñar a programar ni explicar lo que son las bases de datos. Por tanto, doy por hecho que ya se poseen esos conocimientos esenciales y presento una muy breve introducción a las herramientas que se usarán en este breve tutorial que son:

1) Microsoft SQL Server 2005 Express. 2) Microsoft SQL Server Management Studio Express. 3) Microsoft Visual C# Express 2008

A continuación, me enfoco en la aportación importante de este tutorial que es el código que permite manipular una base de datos SQL Server, desde un programa de C #, vía instrucciones SQL.

Page 3: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 3

Herramientas que se requieren.

4) Microsoft SQL Server 2005 Express. 5) Microsoft SQL Server Management Studio Express. 6) Microsoft Visual C# Express 2008

Microsoft SQL Server 2005 Express. SQL Server es un sistema para administración de bases de datos que posee una arquitectura cliente / servidor. Utiliza el lenguaje de consulta Transact-SQL para recibir comandos desde los clientes que se conectan a él, y ofrece una gran variedad de herramientas y servicios para desarrollar y administrar bases de datos de distintos tamaños y complejidades. La versión SQL Server 2005 Express Edition es gratuita y de distribución libre, liviana e ideal para utilizarla en soluciones departamentales, prototipos y aplicaciones Web de baja complejidad. El tamaño máximo que puede llegar a tener una base de datos es de 4 GB. Microsoft SQL Server Management Studio Express. Si bien el servidor SQL Server se puede administrar desde distintas herramientas que vienen incluidas en el mismo producto. No obstante, existe una herramienta útil para tal efecto, que es Microsoft SQL Server Management Studio Express. Esta es una herramienta visual, lo que permite administrar los servidores SQL de manera rápida y sencilla. Esta herramienta no viene incluida en Microsoft SQL Server 2005 Express, debe descargarse por separado.

Page 4: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 4

Bien, una vez que se tiene instaladas las tres herramientas antes citada, procedemos a crear la base de datos que se utilizará de ejemplo. Para ello, abrimos Microsoft SQL Server Management Studio Express, y entramos con la Authentication de Windows, según se ilustra en la siguiente figura:

Page 5: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 5

Una vez que damos clic en “Connect” entramos de lleno al Microsoft SQL Server Management Studio Express, y veremos este entorno gráfico:

Page 6: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 6

Ahora, hagamos una carpeta de nombre “bd” sobre “C:\”, es decir, hagamos C:\bd. A continuación en Microsoft SQL Server Management Studio Express creamos una nueva base de datos, a la cual llamemos “clientes”, y para en el casillero de “Path” en dos dos líneas correspondientes ubicaremos nuestra base de datos “clientes” en la carpeta previamente creada, es decir, en C:\bd. Según se ilustra a continuación.

Page 7: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 7

Sobre la base de datos “clientes”, creo una tabla llamada “nombres”, con la siguiente estructura.

A la cual doto con la siguiente información de ejemplo:

Page 8: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 8

Guardamos los datos de la tabla “nombres” de la base de datos “clientes”, y salimos de Microsoft SQL Server Management Studio Express. Ahora, nuestro programa en Visual C # tendrá esta forma:

En la cual, los botones tendrán los nombres respectivamente de: bt_conectar, bt_Actualizar, bt_Insertar, bt_borrar, bt_consultar_ordenadamente y bt_salir. Además, tendremos una caja de texto de nombre tx_resultados.

Page 9: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 9

Obtener la cadena de conexión a la base de datos. Ahora requerimos obtener una cadena de conexión a la base de datos. Para ello, recurrimos al menú data, y seleccionamos Add New Data Source, esto en el IDE de Visual C # Express 2008.

A continuación seleccionamos Database. Vease la siguiente figura.

Page 10: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 10

Ahora, en Add Connection, buscamos la base de datos clientes.mdf, que recordará se encuentra en C:\bd\. Probamos la conexión con Text Connection, debe dar afirmativo.

Page 11: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 11

A continuación, en Choose Your Data Connection copiamos la cadena de conexión, y cancelamos el proceso.

Page 12: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 12

Ahora, la cadena de conexión copiada tiene esta forma: Data Source=.\SQLEXPRESS;AttachDbFilename=C:\bd\clientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True Ahora, dado que para C #, el caracter ‘\’ tiene una función especial, debemos anular ese efecto agregando otro carácter de ‘\’. Por tanto la cadena de conexión queda de esta forma: Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\bd\\clientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

Codigo inicial del programa. Note las bibliotecas necesarias para el manejo de la base de datos.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Data.Sql; using System.Data.SqlClient;

Page 13: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 13

namespace Connet_to_SQL { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void bt_conectar_Click(object sender, EventArgs e) { conexion_y_consulta_simple(); }

… …

Page 14: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 14

Conexión y consulta sencilla a la base de datos. En el siguiente bloque de código se hará la conexión a la base de datos, y se utilizará la consulta SELECT básica: SELECT * from nombreTabla

private void bt_conectar_Click(object sender, EventArgs e) { conexion_y_consulta_simple(); } private void conexion_y_consulta_simple() { System.Data.SqlClient.SqlConnection con; con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\bd\\clientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; SqlConnection SQLConnection = new SqlConnection(); try { con.Open(); MessageBox.Show("Base de datos abierta");

Page 15: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 15

string commandString = "SELECT * FROM nombres"; SqlCommand sqlCmd = new SqlCommand(commandString, con); SqlDataReader dataReader = sqlCmd.ExecuteReader(); tx_resultados.Text = ""; while (dataReader.Read()) { tx_resultados.Text = tx_resultados.Text + dataReader["nom"] + ", " + dataReader["direccion"] + "====="; } dataReader.Close(); con.Close(); MessageBox.Show("Base de datos cerrada"); } catch (Exception Ex) { MessageBox.Show("Error. La base de datos no pudo ser abierta" + Ex.Message); }

Page 16: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 16

Resultado de la ejecución:

Page 17: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 17

Modificación a un registro de la base de datos. En el siguiente bloque se utilizará la instrucción UPDATE, que tiene la forma:

UPDATE nombreTabla SET nombreColumna1 = Valor1, nombreColumna2 = Valor2, …, nombreColumnaN = ValorN, WHERE criterios

private void bt_Actualizar_Click(object sender, EventArgs e) { actualiza(); } private void actualiza() { System.Data.SqlClient.SqlConnection con; con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\bd\\clientes.mdf;Integrated

Security=True;Connect Timeout=30;User Instance=True"; SqlConnection SQLConnection = new SqlConnection(); try { con.Open();

Page 18: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 18

MessageBox.Show("Base de datos abierta ......"); string commandString = "UPDATE nombres SET direccion = 'Xalapa, Ver.' WHERE nom = 'Enrique Ruiz Diaz'"; SqlCommand sqlCmd = new SqlCommand(commandString, con); sqlCmd.ExecuteNonQuery(); MessageBox.Show("La actualización se efectuó"); } catch (Exception Ex) { MessageBox.Show("Ocurrió un error: " + Ex.Message); } con.Close(); MessageBox.Show("Base de datos cerrada"); }

Page 19: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 19

Inserción de un registro. Se usará la instrucción INSERT que tiene la forma: INSERT INTO nombreTabla (nombreColumna1, nombreColumna2, …, nombreColumnaN) VALUES (Valor1, Valor2, …, ValorN)

private void bt_Insertar_Click( object sender, EventArgs e) { inserta(); } private void inserta() { System.Data.SqlClient. SqlConnection con; con = new System.Data.SqlClient. SqlConnection ();

con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\bd\\clien tes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True " ;

SqlConnection SQLConnection = new SqlConnection (); try {

Page 20: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 20

con.Open(); MessageBox .Show( "Base de datos abierta ......" ); string commandString = "INSERT INTO nombres (clave, nom, direccion) VALUES ('165', 'Juan López López', 'Tierra Blanca, Ver.')" ; SqlCommand sqlCmd = new SqlCommand(commandString, con); sqlCmd.ExecuteNonQuery(); MessageBox .Show( "La Inserción se efectuó." ); } catch ( Exception Ex)

{ MessageBox .Show( "Ocurrió un error: " + Ex.Message); } con.Close(); MessageBox .Show( "Base de datos cerrada" ); }

Page 21: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 21

Borrado de un registro de la base de datos.

DELETE tiene esta forma: DELETE FROM nombreTabla WHERE criterio

private void bt_borrar_Click(object sender, EventArgs e)

{ borrar(); } private void borrar() { System.Data.SqlClient.SqlConnection con; con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\bd\\clientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; SqlConnection SQLConnection = new SqlConnection(); try

{ con.Open();

Page 22: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 22

MessageBox.Show("Base de datos abierta ......");

string commandString = "DELETE FROM nombres WHERE nom = 'Adelfo Perez González'"; SqlCommand sqlCmd = new SqlCommand(commandString, con);

sqlCmd.ExecuteNonQuery(); MessageBox.Show("El borrado de registro se efectuó.");

} catch (Exception Ex) {

MessageBox.Show("Ocurrió un error: " + Ex.Message); } con.Close(); MessageBox.Show("Base de datos cerrada"); }

Page 23: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 23

Consultar ordenadamente La forma ORDER BY es: SELECT nombreColumna1, nombreColumna2, … FROM nombreTabla ORDER BY Columna ASC | DESC (Tenemos la opción de elegir bien ascedente o descendente).

private void bt_consultar_ordenadamente_Click(object sender, EventArgs e) { consultar_ordenadamente(); } private void consultar_ordenadamente () { MessageBox.Show("nuevo"); System.Data.SqlClient.SqlConnection con; con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\bd\\clientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; SqlConnection SQLConnection = new SqlConnection();

Page 24: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 24

try { con.Open(); MessageBox.Show("Base de datos abierta ......"); string commandString = "SELECT clave, nom, direccion FROM nombres ORDER BY nom ASC"; SqlCommand sqlCmd = new SqlCommand(commandString, con); SqlDataReader dataReader = sqlCmd.ExecuteReader(); tx_resultados.Text = ""; while (dataReader.Read()) { tx_resultados.Text = tx_resultados.Text + dataReader["nom"] + ", " + dataReader["clave"] + ", " + "*****"; } dataReader.Close(); MessageBox.Show("La consulta ordenada, se efectuó."); } catch (Exception Ex) { MessageBox.Show("Ocurrió un error: " + Ex.Message); }

Page 25: M.C. Enrique Ruiz Diaz - Manejo de una Base de Datos Microsoft SQL Server desde Visual C#, vía SQL

Manejo de una Base de Datos Microsoft SQL Server a través de Visual C #, vía SQL. Autor: M.C. Enrique Ruiz Díaz

15-Febrero-2010 25

Resultado en pantalla: