Está en la página 1de 25

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

M.C. Enrique Ruiz Díaz

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

15-Febrero-2010 1
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

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.

15-Febrero-2010 2
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

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.

15-Febrero-2010 3
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

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:

15-Febrero-2010 4
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

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

15-Febrero-2010 5
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

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.

15-Febrero-2010 6
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

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:

15-Febrero-2010 7
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

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.

15-Febrero-2010 8
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

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.

15-Febrero-2010 9
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

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.

15-Febrero-2010 10
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

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

15-Febrero-2010 11
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

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;

15-Febrero-2010 12
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

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();
}

……

15-Febrero-2010 13
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

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");

15-Febrero-2010 14
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

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);
}

15-Febrero-2010 15
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

Resultado de la ejecución:

15-Febrero-2010 16
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

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();

15-Febrero-2010 17
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

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");

15-Febrero-2010 18
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

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\\clientes.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True";

SqlConnection SQLConnection = new SqlConnection();

try
{

15-Febrero-2010 19
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

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");

15-Febrero-2010 20
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

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();

15-Febrero-2010 21
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

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");

15-Febrero-2010 22
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

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();

15-Febrero-2010 23
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

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);
}

15-Febrero-2010 24
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

Resultado en pantalla:

15-Febrero-2010 25