Vous êtes sur la page 1sur 55

1. Conexin a Base de datos .

sdf para Windows Mobile 5


Hola chicos.

A ver si me podis echar una mano, estoy programando con VB.NET para Windows
Mobile 5 y he creado una base de datos Mobile (.sdf) para que me almacene los datos
que se van procesando en un formulario para luego exportarlos a un .txt

La cuestin, es que no logro realizar la conexin, con dicha base de datos, me est
fallando la cadena de conexin, est claro que algo no est correcto.

Este es el cdigo:


Imports System
Imports System.Data.SqlClient

--- COMIENZO CADENA DE CONEXIN
He mirado por internet ejemplos pero utilizan ID de usuario y password, cuando yo realmente
cuando cre la BD solo le puse un password, la cadena de conexin para Windows Mobile CE (os
la muestro luego) si que me funciona.

Dim myConnString AsString = _
"Password = ;Initial Catalog=pubs;Data Source=(System.IO.Path.GetDirectoryName(System.Ref
lection.Assembly.GetExecutingAssembly.GetName.Code Base) _"
"\MedyserPartes.sdf;""

-------------------------------FIN CADENA CONEXIN
Dim myConnection AsNew SqlConnection(myConnString)
Dim myCommand AsNew SqlCommand()
Dim myReader As SqlDataReader
myCommand.CommandType = Data.CommandType.StoredProcedure
myCommand.Connection = myConnection
myCommand.CommandText = "SELECT art_clave FROM ARTCULOS"

'VALOR 1 Guardo el campo art_clave en una variable para luego tratarla Es correcto?
myConnection.Open()
myReader = myCommand.ExecuteReader
Dim Valor AsString
Valor = myReader.Item(0)
Y ahora la conexin a la base de datos que me funciona pero para Windows Mobile CE


Conexion = New System.Data.SqlServerCe.SqlCeConnection
Conexion.ConnectionString = ("Data Source =" +
(System.IO.Path.GetDirectoryName(System.Reflection
.Assembly.GetExecutingAssembly.GetName.CodeBase) _
+ ("\MedyserPartes.sdf;" _
+ ("Password =" + """pass"";"))))
Os agradecera vuestra ayuda y consejos ya que estoy bloqueado en este paso y no
puedo continuar hasta que lo tenga solucionado, luego ya el resto del proyecto es casi
repetir lo mismo, hacer un Reader de unos datos de la BD almacenados y ejecutar
luego un INSERT en una tabla que luego ser la que se exporte a .txt

Un saludo y gracias.
Respuesta con cita textual
2. 20 de agosto de 2009, 10:52#2
jarogo

Infinito
Fecha de registro:
16 de octubre de 2006
Desde:
Galicia - Espaa
Mensajes:
2.388
Dispositivo mvil:
Impresionante emulador
Sistema operativo:
No tengo nada

Hola!

el problema es que la cadena de conexin a una base de datos sdf tiene que ser de
tipo SqlCeConnection, y tu estas usando SqlConnection (que es para sql server de
escritorio). Igualmente tendrs tendras que usar SqlCeCommand, SqlCeDataReader,
etc.

Saludos!
-Estas gorda, ehh!!!
-Si, como una tapia...
Respuesta con cita textual
3. 20 de agosto de 2009, 10:58#3
blimo86

Iniciante
Fecha de registro:
28 de noviembre de 2006
Mensajes:
8
Dispositivo mvil:
ninguno
Sistema operativo:
Windows Mobile 5.0 Phone Edition

Ok, gracias, entonces si no entiendo mal la cosa tendra que ser algo as:



Conexion = New System.Data.SqlServerCe.SqlCeConnection
Conexion.ConnectionString = ("Data Source =" +
(System.IO.Path.GetDirectoryName(System.Reflection
.Assembly.GetExecutingAssembly.GetName.CodeBase) _
+ ("\MedyserPartes.sdf;" _
+ ("Password =" + """pass"";"))))


Dim myConnection As New SqlCeConnection(Conexion)
Dim myCommand As New SqlCeCommand()
Dim myReader As SqlCeDataReader
myCommand.CommandType = Data.CommandType.StoredProcedure
myCommand.Connection = myConnection
myCommand.CommandText = "SELECT art_clave FROM ARTCULOS"

'VALOR 1 Guardo el campo art_clave en una variable para luego tratarla Es correcto?
myConnection.Open()
myReader = myCommand.ExecuteReader
Dim Valor AsString
Valor = myReader.Item(0)
Ahora no estoy en la oficina y por eso no lo puedo probar... pero creo que con lo que
me has dicho la cosa sera asi, es correcto?

Un saludo y mil gracias.
Respuesta con cita textual
4. 20 de agosto de 2009, 11:18#4
jarogo

Infinito
Fecha de registro:
16 de octubre de 2006
Desde:
Galicia - Espaa
Mensajes:
2.388
Dispositivo mvil:
Impresionante emulador
Sistema operativo:
No tengo nada

mmmm, casi: tienes declaradas 2 veces un sqlCeConnection (Conexion y
myConnection), te sobra una.

Sera algo como esto (tambin sin probar):

Dim myConnection As New SqlCeConnection("Data Source =" +
(System.IO.Path.GetDirectoryName(System.Reflection
.Assembly.GetExecutingAssembly.GetName.CodeBase) _
+ ("\MedyserPartes.sdf;" _
+ ("Password =" + """pass"";")
myConnection.Open()

Saludos!
ltima edicin por jarogo 20 de agosto de 2009 a las 11:20
-Estas gorda, ehh!!!
-Si, como una tapia...
Respuesta con cita textual
5. 19 de octubre de 2010, 23:44#5
pablolaq

Intermitente
Fecha de registro:
19 de octubre de 2010
Desde:
Argentina
Mensajes:
46
Dispositivo mvil:
Emulador
Sistema operativo:
Windows Mobile 6.5 o anterior
Gracias
Publicado originalmente por jarogo
mmmm, casi: tienes declaradas 2 veces un sqlCeConnection (Conexion y myConnection), te sobra
una.

Sera algo como esto (tambin sin probar):

Dim myConnection As New SqlCeConnection("Data Source =" +
(System.IO.Path.GetDirectoryName(System.Reflection
.Assembly.GetExecutingAssembly.GetName.CodeBase) _
+ ("\MedyserPartes.sdf;" _
+ ("Password =" + """pass"";")
myConnection.Open()

Saludos!

esto funciona a la perfeccion , existe alguna manera de ocultar alguna columna(id)
siguiendo este codigo?

DESDE YA MUCHAS GRACIAS.


jueves, 8 de noviembre de 2012
[Visual Studio] Base de Datos integradas al proyecto

Vamos a analizar una situacin particular que se produce al integrar las bases de
datos, ya sean Ms Access, Sql Compact, Sql Server, o cualquier otra que pueda
integrarse al Visual Studio
Cuando se desarrollan aplicaciones de escritorio, WinForm o WPF y a estos proyectos
se le agrega una db, puede que las actualizaciones de datos no impacten sobre el
archivo que se visualiza en el Solution Explorer.
Nota: si bien el ejemplo del articulo estar basado en Sql Compact (.sdf) la solucin
planteada aplicara a otras base de datos como ser Ms Access (.mdb, .accdb), Sql
Server (.mdf), etc

Problema

Cuando un conectionstring se define usando el nombre de la db o |DataDirectory| para
especificar la localizacin del archivo de base de datos, en ambos casos se hace
referencia a la carpeta donde se encuentra ejecutndose el .exe
string connstring = "Data Source=|DataDirectory|Contactos.sdf;Persist Security
Info=False;";
Al usar este tipo de connection string es bastante comn ver desarrollos en donde la
db se encuentra integrada al Visual Studio.

Si se est ejecutando desde el Visual Studio la carpeta, por defecto, donde compila y
deja los archivos resultantes ser el \bin\Debug del proyecto, es all donde la
aplicacin espera que se encuentre la base de datos.
No hay que engaarse, los cambios que realicen actualizacin a la db no sern
efectuadas sobre el archivo que se visualiza integrado al VS (el que se visualiza en la
imagen anterior), sino que las modificaciones se realizaran sobre la copia que crea el
Visual Studio en la carpeta \bin\Debug

Como se observa, el Visual Studio creo una copia de la db en la carpeta donde
compila, es por eso que .exe y .mdb estn juntos, es ms cuando se detenga la
ejecucin y se inicie nuevamente una nueva copia ser efectuada pisando los datos
previos.
Por lo tanto, si luego de ejecutar la aplicacin desde el VS, la aplicacin realizo
actualizaciones en los datos, al detenerla y realizar doble click en el archivo de base de
datos que est integrado en el Solution Explorer para poder trabajarlo desde el
Server Explorer, no se visualizara ningn cambio.

Al usar el Show Table Data no habr cambios que visualizar

Sera necesario usar la opcin

Para poder acceder a al db que se copi en el \bin\Debug y al hacer bloque click en
esta y verla en el Server Explorer all si estarn las actualizaciones realizaras en la
ultima ejecucin.

Nota: recuerden que al volver a ejecutar desde el Visual Studio la db que se encuentra
en la carpeta \bin\Debug ser reemplazada por una nueva copia
Esta situacin solo se manifiesta si se ejecuta desde el Visual Studio, cuando se lleve el
.exe a la pc del usuario esta situacin no se presentara, la aplicacin se ejecuta
directamente sin intermediarios que realice la copia de la db a una carpeta de
compilacin (apunto a que no esta el Visual Studio en medio creando una carpeta
donde ubicar los archivos resultantes necesario para la ejecucin).

Solucin

Si se quiere evitar esta situacin y hacer uso de la misma db que esta integrada al
proyecto, el primer paso ser deshabilitar la copia que realiza el VS, para ello se
debera ir a las propiedades del archivo

Y all cambiar la opcin a Do not copy

Y luego se deber modificar el string de conexin indicando la ruta completa el archivo
de la db, usar solo el nombre o |DataDirectory| ya no ser valido (porque no se
copiara el archivo a la carpeta de compilacion)
string connstring = "Data Source=C:\...\Contactos.sdf;Persist Security Info=False;";



aver si te sirve este codigo Cambia BDEJEMPLO por el Nombre de tu Base de Datos Original
y el nombre de tu Tabla

--------------------------------------...

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1

Dim Cone As SqlConnection = New SqlConnection("Server=(Local); Integrated Security=SSPI;
DataBase=BDEJEMPLO")

Private Sub BTNIngresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button3.Click

Dim Cad As String = "SELECT usuario, contrasea FROM usuario"
Dim Da As SqlDataAdapter = New SqlDataAdapter(Cad, Cone)
Cone.Open();
Dim Tbl As DataSet = New DataSet
Cad.Fill(Tbl)

If Tbl.Tables[0].Rows.Count > 0Then
MessageBox.Show("El usuario se logueo", "Correcto", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation)
Else
MessageBox.Show("Password o Usuario Incorrecto", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
End If

End Sub

End Class


Atendiendo a todos los usuarios de Visual Basic, vamos a realizar el uso de Procedmientos Almacenados en
SQL Server 2005y Visual Basic. El primer paso , es disear nuestro formulario.

Hay que considerar que este ejemplo es similar al que hice con Visual C#. Los elementos a utilizar son:
SQLConnection
SQL Command
Stored Procedured SQL SERVER 2005
Si ya tenemos el formulario, ahora hay que agregarle el cdigo. Empezaremos por agregarle en el encabezado
antes de Public Class Form1 esto:
Imports System.Data.SqlClient
Este es mi formulario de ejemplo, es una pantalla para dar de alta a los clientes, en ella solo voy a estar
afectando a los campos clave, nombre, direccion y negocio. Hay que agregrar una nueva conexion a una base de
datos declaramos esto agregandole la cadena de conexin.
Dim cnn As SqlConnection
Dim cmd As SqlCommand
Dim dr As DataRow
Dim conexion As String = Data Source=.;Initial Catalog=dbDemo;Integrated Security=true
Coloreo la linea de la conexion porque es importante recordar lo siguiente:
Data Source: Se debe indicar el nombre del servidor, si se tiene SQLSERVER Express, sera necesario darselo, si
se cuenta con una versin superior, podemos utilizar unicamente el . (punto)
Initial Catalog: Debemos colocar el nombre de la base de datos a utilizar.
Botn Altas.
Primero hay que crear el procedimiento almacenado, en la venta de Server Explorer , hay que escoger la Base
de Datos, y de ahi la carpeta de Stored Procedure, damos un clic con el boton derecho y escogemos Add New
Stored Procedure

Aqui vamos a crear los procedimientos almacenados (stored procedure).
Esto har que muestre una pantalla para editar el respectivo cdigo en SQL, los siguientes procedimientos
estn compuestos de dos partes, la primera donde se declaran los parametros a utilziar, y en la segunda donde
se realiza la transaccin SQL.

El procedimiento de Insertar un registro queda de esta forma, recuerda que el nombre que le des al Store
Proceudure ser como se almacenar y se llamar desde tu programa en VS.

Stored Procedure Altas
ALTER PROCEDURE dbo.spAltaCliente
@prmId int,
@prmNombre nvarchar(50),
@prmDireccion nvarchar(50),
@prmNegocio nvarchar(50)
AS
INSERT INTO CLIENTES (ID,NOMBRE,DIRECCION,NEGOCIO)
VALUES (@prmId,@prmNombre,@prmDireccion,@prmNegocio)
RETURN
Cdigo del Botn Altas
cnn = New SqlConnection(conexion)
cnn.Open();
cmd=New SqlCommand(spAltaCliente,cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(@prmClave, SqlDbType.Int).Value = Convert.ToInt16(TextBox1.Text)
cmd.Parameters.Add(@prmNombre, SqlDbType.NVarChar).Value = TextBox2.Text
cmd.Parameters.Add(@prmDireccion, SqlDbType.NVarChar).Value = TextBox3.Text
cmd.Parameters.Add(@prmNegocio, SqlDbType.NVarChar).Value = TextBox4.Text
cmd.ExecuteNonQuery()
MessageBox.Show(Cliente Activado)
TextBox1.Text =
TextBox2.Text =
TextBox3.Text =
TextBox4.Text =
Stored Procedure Eliminar
CREATE PROCEDURE dbo.spEliminaCliente
@prmId int
AS
DELETE FROM CLIENTES WHERE ID=@prmId
RETURN

Cdigo del Butn Eliminar
cnn = New SqlConnection(conexion)
cnn.Open()
cmd = New SqlCommand(spEliminaCliente, cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(@prmClave, SqlDbType.Int).Value = Convert.ToInt16(TextBox1.Text)
cmd.ExecuteNonQuery()
MessageBox.Show(Cliente ELIMINADO)
TextBox1.Text =
TextBox2.Text =
Stored Procedure Modificar
CREATE PROCEDURE dbo.spModificaCliente
@prmId int,
@prmNombre nvarchar(40)
AS
UPDATE clientes SET nombre=@prmNombre WHERE Id=@prmId
RETURN
Cdigo del Botn Modificar
cnn = New SqlConnection(conexion)
cnn.Open()
cmd = new SqlCommand(spModificaCliente, cnn)
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(@prmId, SqlDbType.Int).Value = Convert.ToInt16(TextBox1.Text)
cmd.Parameters.Add(@prmNombre, SqlDbType.NVarChar).Value = TextBox2.Text
cmd.ExecuteNonQuery()
MessageBox.Show(Cliente Modificado)
textBox1.Text =
textBox2.Text =
Y les anexo el botn de consulta mas tarde.


Como saber si un campo existe en SQL Server.

Para saber si un campo existe o no en nuestra base de datos de SQL Server 2000/2005/2008. Lo
primero que debemos hacer es ubicarnos en la base de datos que queremos encontrar el campo y
copiamos la siguiente sentencia:



SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%Nombre_Campo_a_Buscar%'


Al ejecutar la consulta anterior nos traer todas las tablas que contienen el nombre que estamos
buscando y tener en cuenta que estamos usando la condicin LIKE con el % la cual nos traer las
tablas en donde el campo coincida con parte del testo mencionado. Si se quiere buscar el campo
exacto quitar % o mejor cambiar LIKE el por =


Objetivos del tutorial
En este tutorial, aprender a sacar el mximo partido a las capacidades de diseo integradas en
Visual Studio 2005 para desarrollar rpidamente aplicaciones que usan datos almacenados en una
base de datos SQL Server 2005 Compact Edition. En el tutorial usar Visual C#.NET. Existe otro
tutorial que muestra cmo usar Visual Basic.NET para realizar la misma tarea.
Nota
SQL Server Compact Edition es una tecnologa de bases de datos verstil compatible con todas las
plataformas de Windows y supone una evolucin de la tecnologa de bases de datos de Windows
Mobile conocida como SQL Server Mobile Edition (SQL Mobile). Actualmente, algunos cuadros de
dilogo de Visual Studio 2005 y SQL Server Management Studio 2005 se refieren todava al
producto como SQL Mobile; por lo tanto, al seguir los pasos de este tutorial, si uno de ellos le indica
que seleccione SQL Server Compact Edition y, en su lugar, la interfaz de usuario muestra SQL Server
Mobile, debe seleccionar SQL Server Mobile. La diferencia en el nombre es un problema a corto
plazo y se modificar prximamente con Visual Studio 2005 SP1 y SQL Server 2005 SP2. En caso de
aparecer como SQL Mobile o SQL Server Compact Edition, la tecnologa y el modo de usarlos son
los mismos.
En este tutorial, realizar los ejercicios siguientes:
Usar Visual Studio 2005 Designer para crear una aplicacin que permita al usuario obtener
acceso y actualizar los datos de SQL Server 2005 Compact Edition
Ver, crear y administrar los datos de SQL Server 2005 Compact Edition desde Visual Studio
2005
Ejercicio 1: Usar Visual Studio 2005 Designer para crear una aplicacin que permita al usuario
obtener acceso y actualizar los datos de SQL Server 2005 Compact Edition
En este ejercicio, aprender a usar Visual Studio 2005 Designer para crear un formulario que permita
al usuario obtener acceso y actualizar los datos de SQL Server Compact Edition.
Para crear un proyecto
1. Inicie Visual Studio 2005 haciendo clic en Inicio | Todos los programas | Microsoft Visual
Studio 2005 | Microsoft Visual Studio 2005.
2. Haga clic en Archivo | Nuevo | Proyecto para crear una aplicacin nueva de Windows
Forms
3. En el cuadro de dilogo Nuevo proyecto en Tipos de proyecto, busque Visual
C# | Windows
Nota
Dependiendo de la configuracin de Visual Studio, Visual C# quizs aparezca incluido
en Otros idiomas.
4. En el cuadro Plantillas, seleccione Aplicacin para Windows
5. Cambie el Nombre a RADDataDemo, como se muestra en la figura 1 y, a continuacin,
haga clic en Aceptar
Nota
Puede crear el proyecto en la Ubicacin de su eleccin.

Figura 1. Cuadro de dilogo Nuevo proyecto
Visual Studio crea un proyecto nuevo y abre Form1 en el diseador de formularios. Ahora,
debe instalar el formulario para mostrar y actualizar los datos de una base de datos de SQL
Server Compact Edition existente
Para crear una base de datos SQL Server Compact Edition como origen de datos
El Asistente para la configuracin de orgenes de datos de Visual Studio le permite agregar un
origen de datos al proyecto. Puede elegir entre varios orgenes de datos, incluidos SQL Server y SQL
Server Compact Edition, objetos en memoria o servicios web. En este laboratorio, debe elegir la
base de datos de muestra de SQL Server Compact Edition, Northwind, como origen de datos de la
aplicacin. En la mayora de los casos, el origen de datos se usa para enlazar datos a la interfaz de
usuario de la aplicacin.
En Visual Studio, haga clic en Datos | Mostrar orgenes de datos para abrir el panel
de Orgenes de datos
Dentro del panel Orgenes de datos, haga clic en el botn Agregar nuevo origen de
datos situado en la parte superior izquierda del panel Orgenes de datos, como se muestra
en la figura 2.
Aparecer el Asistente para la configuracin de orgenes de datos.

Figura 2. Hacer clic en Agregar nuevo origen de datos
Seleccione Base de datos como tipo de origen de datos y haga clic en Siguiente, como se
muestra en la figura 3

Figura 3. Elegir un tipo de origen de datos en el Asistente para configuracin de orgenes de
datos
En la pgina Elegir la conexin de datos, haga clic en Nueva conexin.
Nota
Si ha creado anteriormente una cadena de conexin a la base de datos deseada, debera
poder elegir una opcin del cuadro desplegable y no tendra que crear una conexin nueva.
En el cuadro de dilogo Elegir origen de datos, seleccione Microsoft SQL Server 2005
Compact Edition y, a continuacin, haga clic en Continuar, como se muestra en la figura 4.

Figura 4. Cambiar el origen de datos
En el cuadro de dilogo Agregar conexin, asegrese de que la opcin Mi PC est
seleccionada como Origen de datos, como se muestra en la figura 5. Esto le permite
seleccionar un archivo de base de datos del disco duro del equipo como origen de datos.
Todava en el cuadro de dilogo Agregar conexin, haga clic en Examinar para abrir el
cuadro de dilogo de seleccin de archivos.

Figura 5. Agregar una conexin
Seleccione el archivo C: \Archivos de Programa\Microsoft Visual Studio
8\SmartDevices\SDK\SQL Server\Mobile\v3.0\Northwind.sdf en el cuadro de dilogo
de seleccin de archivos y haga clic en Abrir para seleccionar la base de datos.
En el cuadro de dilogo Agregar conexin, haga clic en Probar conexin para comprobar
que la conexin de la base de datos est instalada adecuadamente. Si el archivo de base de
datos existe y SQL Server Compact Edition se ha instalado adecuadamente, un cuadro de
dilogo le informar de que la conexin se realiz correctamente.
Haga clic en Aceptar para descartar el cuadro de dilogo La conexin de prueba se
realiz correctamente.
Haga clic en Aceptar dentro del cuadro de dilogo Agregar conexin, ahora que ha
probado correctamente la conexin.
En este momento, puede ampliar la Cadena de conexin en el cuadro de dilogo Elegir la
conexin de datos para ver la cadena de conexin que se ha generado, como se muestra
en la figura 6.

Figura 6. Cuadro de dilogo Elegir la conexin de datos, mostrando la cadena de conexin
seleccionada
Haga clic en Siguiente dentro del cuadro de dilogo Elegir la conexin de datos.
Aparecer un mensaje en el que se pregunta si desea copiar el archivo de datos local en el
proyecto y modificar la conexin en consecuencia, como se muestra en la figura 7. Haga clic
en S para copiar el archivo de datos local en el proyecto.

Figura 7. Mensaje para la copia del archivo de datos local al proyecto actual
Cuando se le solicite guardar la cadena de conexin, asegrese de que la casilla de
verificacin S, guardar esta conexin como est marcada. Salga de la cadena de conexin
llamada NorthwindConnectionString y, a continuacin, haga clic en Siguiente, como se
muestra en la figura 8. Resulta una buena idea guardar las cadenas de conexin en un
archivo de configuracin de aplicacin para simplificar la referencia a distintas copias de
archivos de base de datos sin volver a generar ni implementar la aplicacin.

Figura 8. Guardar el cuadro de dilogo de Cadena de conexin
En la pgina Elija los objetos de base de datos, expanda Tablas y marque las
tablas Customers, Employees, Orders y Shippers para incluirlos en el conjunto de datos,
como se muestra en la figura 9.

Figura 9. Cuadro de dilogo Elija los objetos de base de datos
Deje el Nombre del conjunto de datos NorthwindDataSet y, a continuacin, haga clic
en Finalizar, como se muestra en la figura 9
Visual Studio crea el conjunto de datos, que se har visible en el panel Orgenes de datos.
Para crear los elementos de formulario de una tabla en un conjunto de datos
Mediante Visual Studio, puede especificar los controles predeterminados para asociar con cada
columna en una tabla de la base de datos y, as, simplemente arrastrar y colocar las columnas de la
tabla o incluso la tabla entera a un formulario para crear fcilmente y configurar los controles
enlazados con datos. As usar estas caractersticas para crear un formulario que los usuarios
pueden usar para ver y modificar los valores de la base de datos.
1. En el panel de Orgenes de datos de Visual Studio, ample NorthwindDataSet para mostrar
todas las tablas contenidas en el conjunto de datos si an no son visibles.
2. Ample la tabla Orders para mostrar la lista de columnas de tabla.
3. Seleccione el cuadro desplegable en Orders y elija Detalles, como se muestra en la figura
10.
Al elegir Detalles, se generarn controles individuales para cada columna de la tabla
cuando sta se encuentre en un formulario.

Figura 10. Cambiar la vista de la tabla Orders a Detalles
4. Cambie el control predeterminado para la columna Order ID a una etiqueta haciendo clic
en el cuadro desplegable de Order ID y seleccionando Etiqueta. De modo similar, cambie
los controles predeterminados para las columnas Customer ID, Employee ID y Ship
Via a Cuadro combinado.
5. Arrastre la tabla Orders y colquela en el formulario.
Visual Studio crea los controles para cada una de las columnas de la tabla, un control de
navegacin de base de datos y los enlaces de datos necesarios para vincular estos controles
a la tabla. Esto tiene como resultado el formulario que se muestra en la figura 11.

Figura 11. El formulario y la bandeja de componentes despus de arrastrar la tabla Orders al
formulario
6. Arrastre la tabla Customers al Cuadro combinado Customer ID del formulario. De esta
forma, Visual Studio crea un vnculo entre la tabla Customers y el Cuadro combinado, de
modo que las selecciones enumeradas en el cuadro desplegable del Cuadro combinado se
rellenan automticamente con el contenido de la tablaCustomers. En lugar de mostrar el
nmero real de clientes, el cuadro desplegable mostrar el apellido de cada cliente. Esto
ocurre porque Visual Studio modifica automticamente los enlaces de datos para que el
valor de pantalla sea la primera columna de la cadena de la tabla que no forma parte de la
clave principal. En el caso de la tabla Customers, la primera columna de cadena que no
forma parte de la clave principal es la columna LastName.
7. Usando la misma tcnica que en el paso anterior, cree los enlaces de datos para rellenar el
cuadro desplegable del Cuadro combinado Employee ID y Cuadro combinado Ship
Via con el contenido de la tabla Employees y la tabla Shippers respectivamente.
8. Ample el formulario en la parte derecha, de modo que haya espacio para colocar un
control Cuadro de imagen.
9. Haga clic en Vista | Cuadro de herramientas para abrir el panel Cuadro de
herramientas y ampliar los Controles comunes.
10. Arrastre el control Cuadro de imagen del Cuadro de herramientas al rea vaca en la
parte derecha del formulario.
11. Haga clic en el botn con flecha de etiquetas inteligentes en la parte superior derecha
del Cuadro de imagen para mostrar el men de etiquetas inteligentes. En el men de
etiquetas inteligentes, cambie la propiedad Modo de tamao a Ajustar tamao
automticamente, como se muestra en la figura 12. Cuando establezca la
propiedad Modo de tamao a Ajustar tamao automticamente, el Cuadro de
imagen cambia automticamente de tamao segn el de la imagen mostrada.

Figura 12. Seleccin del Modo de tamao del Cuadro de imagen
12. En el panel Orgenes de datos, ample la tabla Employees y arrastre la columna Photo al
control Cuadro de imagen que acaba de crear. A continuacin, Visual
Studioautomticamente enlaza el Cuadro de imagen a la columna Photo.
Nota
Podra haber creado los datos enlazados Cuadro de imagen arrastrando la
columna Photo directamente del panel Orgenes de datos del formulario como hizo con las
columnas de la tabla Orders. La tcnica alternativa de colocar primero el Cuadro de
imagen en el formulario y, a continuacin, arrastrar la columna Photo del panel Orgenes
de datos a Cuadro de imagen, se incluye en este tutorial para demostrar que se puede
primero colocar los controles en un formulario y despus asociar los enlaces de datos.
Para probar la aplicacin
1. En Visual Studio, haga clic en Depurar | Iniciar la depuracin.
Cuando la aplicacin aparezca, deber poder ver el formulario completamente rellenado
con los datos y la foto del empleado asociado con el pedido, como se muestra en la figura
13.

Figura 13. Aplicacin en ejecucin
2. Cambie el valor en el campo Ship Country de Italy a Italia y haga clic en el icono Guardar
datos. As guardar los cambios de la base de datos.
3. Cierre el formulario para salir de la aplicacin.
4. Ejecute la aplicacin de nuevo haciendo clic en Depurar | Iniciar la depuracin en Visual
Studio.
5. Tenga en cuenta que el valor de Ship Country es ahora Italia, lo que indica que los datos
modificados se guardaron adecuadamente en la base de datos.
Asimismo, puede usar los controles de la navegacin situados en la parte superior del
formulario para examinar a travs de las entradas de base de datos, agregar entradas
nuevas a la base de datos y eliminarlas.
6. Cierre el formulario para salir de la aplicacin.
Ejercicio 2: Ver, crear y administrar los datos de SQL Server 2005 Compact Edition desde
Visual Studio 2005
En este ejercicio, aprender a usar Visual Studio 2005 para ver y modificar los datos de una base de
datos de SQL Server 2005 Compact Edition existente, adems de a crear y manipular una nueva
base de datos de SQL Server 2005 Compact Edition.
Para ver los datos de una conexin de datos existente
1. En Visual Studio, haga clic en Vista | Explorador de servidores.
Aparecer el panel Explorador de servidores, como se muestra em la figura 14. La
conexin de datos de Northwind.sdf que cre anteriormente en este tutorial debe estar
disponible para que la examine. Puede que tambin estn disponibles otras conexiones de
datos que cre anteriormente.

Figura 14. Panel del Explorador de servidores, mostrando conexiones de datos existentes
2. En el panel Explorador de servidores en Conexiones de datos, ample Northwind.sdf y, a
continuacin, Tablas para ver todas las tablas de la base de datos de Northwind.sdf.
3. Mediante el Explorador de servidores, puede ver el contenido de cualquiera de las tablas de
la base de datos. Para ver el contenido de la tabla Orders, haga clic con el botn secundario
en la tabla Order y seleccione Abrir.
Los datos de la tabla Orders se muestran ahora en un formato de tabla, como se aprecia en
la figura 15. La vista de tabla mantiene una conexin activa a la base de datos; por lo tanto,
pueden ver y modificar los datos de la tabla Orders.

Figura 15. La vista de tabla de los datos de Orders
Cuando ejecute la aplicacin desde Visual Studio, ste hace una copia del archivo de base
de datos del proyecto en su directorio de salida (normalmente el subdirectorio bin\Debug),
que es la copia del archivo de base de datos que usa la aplicacin. Mediante el uso de una
copia separada del archivo de base de datos, puede modificar la copia del archivo de base
de datos tanto como desee durante el proceso de prueba de la aplicacin sin modificar la
versin original de la base de datos.
La conexin de Northwind.sdf en el Explorador de servidores que cre con anterioridad en
este tutorial hace referencia al archivo de base de datos original de Northwind.sdf, no a la
copia que se encuentra en el directorio de salida; por lo tanto, cualquier cambio que lleve a
cabo la aplicacin en la base de datos no se puede apreciar en esta vista. Para ver el archivo
de base de datos que usa la aplicacin, debe crear una conexin nueva de Explorador de
servidores que haga referencia al archivo de base de datos que se encuentra en el
directorio de salida.
De forma predeterminada, Visual Studio copia el archivo de base de datos original del
directorio de salida slo si este archivo no existe ya en el directorio de salida o si el archivo
de base de datos original se ha actualizado ms recientemente que la copia que se
encuentra en el directorio de salida. Si desea que Visual Studio copie el archivo de base de
datos original en el directorio de salida cada vez que inicie la aplicacin, haga clic con el
botn secundario en el archivo de base de datos en el panel Explorador de soluciones,
seleccione Propiedades y, a continuacin, establezca la propiedad Copiar en el directorio
de resultados en Copiar siempre.
4. Cierre la ventana de la tabla Orders.
Para crear una base de datos nueva
1. En el panel Explorador de servidores, haga clic con el botn secundario Conexiones de
datos y seleccione Agregar conexin... para mostrar el cuadro de dilogoAgregar
conexin.
2. En el cuadro de dilogo Agregar conexin, si el campo Origen de datos no est
establecido en Microsoft SQL Server Compact Edition, haga clic en Cambiar... y cambie
el valor a Microsoft SQL Server Compact Edition.
3. En el cuadro de dilogo Agregar conexin, asegrese de que la opcin Mi PC est
seleccionada como Origen de datos.
4. An en el cuadro de dilogo Agregar conexin, haga clic en Crear.
Aparecer el cuadro de dilogo Crear nueva base de datos de SQL Server Compact
Edition, como se muestra en la figura 16.

Figura 16. Cuadro de dilogo Crear nueva base de datos de SQL Server Compact Edition
5. Mediante el uso del directorio que desee, escriba el nombre completo del archivo de base
de datos con el propio archivo de base de datos denominadoNewdatabase.sdf. Por
ejemplo, para crear el archivo de base de datos en una carpeta llamada C: \MyProjects,
escriba el nombre de archivo de base de datos comoC:\MyProjects\NewDatabase.sdf.
Nota
SQL Server Compact Edition no requiere que dote al nombre de archivo de una
extensin .sdf. Sin embargo, es recomendable que siempre use la extensin .sdf al crear
archivos de SQL Server Compact Edition, porque todas las herramientas esperan que los
archivos de base de datos de SQL Server Compact Edition tengan esta extensin.
6. Compruebe Cifrado para aumentar la seguridad de la base de datos.
7. Para crear una base de datos cifrada, debe elegir una contrasea para la base de datos.
Escriba la palabra contrasea tanto en los campos Nueva contrasea comoConfirmar
contrasea.
8. Haga clic en Aceptar.
Como se muestra en la figura 17, aparecer un cuadro de dilogo que indica que la
contrasea elegida no cumple los requisitos de seguridad mnimos. Para los propsitos de
este tutorial, puede conservar la palabra contrasea como contrasea de la base de datos.

Figura 17. Cuadro de dilogo de aviso de requisitos mnimos de seguridad de contrasea
9. Haga clic en S para continuar usando la contrasea seleccionada.
10. El cuadro de dilogo Agregar conexin debe aparecer en este momento, como se muestra
en la figura 18. Haga clic en Aceptar para crear la conexin de base de datos.
Visual Studio crea una conexin a la base de datos nueva que pasar a ser visible en el
panel Explorador de servidores.

Figura 18. Agregar una conexin a una base de datos nueva protegida por contrasea
Para crear tablas en una base de datos
1. En el panel Explorador de servidores, ample la conexin de datos Newdatabase.sdf que
acaba de crear.
2. Haga clic con el botn secundario en Tablas y seleccione Crear tabla.
Aparecer la ventana Nueva tabla.
3. Escriba Customer en el campo Nombre para establecer el nombre de la tabla nueva.
4. Agregue una columna haciendo clic en la celda bajo el encabezado Nombre de columna y
escriba el nombre de la columna. Llame Id a esta columna.
5. Ahora, establezca a los descriptores restantes de la columna: Establezca el Tipo de
datos en int, Permitir valores nulos en No, nico en S, y Clave principal en S, como se
muestra en la figura 19.
La columna Id se usar como campo clave principal.
Nota
Para una tabla con una clave principal multiparte, establezca el valor Clave
principal en S para cada una de las columnas que componen la clave principal.
6. Agregue una columna llamada Nombre y mantenga sus valores asociados como
predeterminados, tal y como se muestra en la figura 19.

Figura 19. Agregar columnas a una tabla nueva
7. Haga clic en Aceptar para crear la tabla.
Visual Studio crea la tabla Cliente. Ahora, se ve la tabla Cliente en el panel Explorador de
servidores, como se muestra en la figura 20.

Figura 20. Tabla recientemente creada Cliente
8. Haga clic con el botn secundario en la tabla Cliente y seleccione Abrir
Aparecer una tabla vaca que enumera los datos en la tabla Cliente.
9. Agregue un registro a la tabla Cliente con 101 como Id y Fred como Name.
10. Agregue otro registro a la tabla Cliente con 102 como Id y Barney como Name.
Ha agregado correctamente dos registros a la tabla Cliente, como se muestra en la figura
21.

Figura 21. Tabla Cliente con las entradas nuevas
11. Cierre la vista de la tabla Cliente haciendo clic en la X que se encuentra en la esquina
derecha de la vista. Los datos de cada fila se guardaron en la tabla Clientecuando movi el
cursor a la fila siguiente; por lo tanto, no hay necesidad de guardar explcitamente la tabla
antes de cerrar la vista.
Crear una consulta nueva
1. En el panel Explorador de servidores, ample la conexin de datos
para Newdatabase.sdf si no est ya ampliada.
2. Haga clic con el botn secundario en Tablas y seleccione Nueva consulta.
El cuadro de dilogo Agregar tabla aparece con una lista de las tablas disponibles en la
base de datos actual. En el caso de esta base de datos, la nica tabla que est disponible es
la tabla Cliente.
3. Seleccione la tabla Cliente y haga clic en Add to make it part of the query (Agregar para
que forme parte de la consulta). El Diseador de consultas muestra la tablaCliente, con una
lista de las columnas de tabla.
4. Haga clic en Cerrar para cerrar el cuadro de dilogo Agregar tabla.
5. Compruebe el cuadro situado a la izquierda de las columnas Id y Nombre de la
tabla Cliente para indicar que la consulta devolver estas columnas.
6. Tenga en cuenta que el Generador de consultas muestra el texto de la consulta que
corresponde a la tabla y a las columnas que ha seleccionado. A veces, es ms sencillo
escribir simplemente la parte del texto de la consulta directamente en lugar de usar la
interfaz grfica de los Diseadores de consultas. Modifique el texto de la consulta para
obtener finalmente la clusula WHERE Name LIKE @name, como se muestra en la figura
22.
Como puede observar, el Diseador de consultas admite los parmetros de SQL
como @name. El Diseador de consultas le solicita automticamente que escriba los
valores de parmetro al ejecutar la consulta.

Figura 22. Consulta creada para seleccionar los datos de la base de datos Cliente
7. Ejecute la consulta haciendo clic en Diseador de consultas | Ejecutar SQL en Visual
Studio.
Aparecer un mensaje que solicita el valor del parmetro @name.
8. Escriba el texto f% como valor del parmetro @name para que la consulta devuelva todos
los registros en los que el campo del nombre empiece con la letra f. Haga clic
en Aceptar para ver los resultados de consulta.
Se mostrarn los resultados de la consulta, como se aprecia en la figura 23.

Figura 23. Resultados de la consulta
9. Cierre la ventana del Diseador de consultas haciendo clic en la X situada en la esquina
izquierda de la ventana
Mantenimiento de la base de datos
El objetivo de esta ltima seccin es simplemente que tenga en cuenta las caractersticas de
mantenimiento disponibles para las bases de datos de SQL Server Compact Edition. Todas las
caractersticas de mantenimiento de esta seccin tambin estn disponibles mediante
programacin a travs de la claseSystem.Data.SqlServerCe.SqlCeEngine.
1. En el panel Explorador de servidores, haga clic con el botn secundario en la conexin de
datos para Newdatabase.sdf y seleccione Propiedades de la base datos.
Aparecer la ventana Propiedades de la base de datos, como se aprecia en la figura 24.

Figura 24. Ventana de Propiedades de la base de datos
2. Tenga en cuenta que la ventana de Propiedades de la base de datos abre la
pgina General, que muestra las estadsticas relativas a la base de datos conectada.
3. Seleccione la pgina Reducir y reparar para mostrar las opciones de compresin y
reparacin de la base de datos.
4. Seleccione la pgina Establecer contrasea para mostrar una pgina que le permite
cambiar la contrasea de la base de datos
5. Haga clic en Cancelar para cerrar la ventana Propiedades de la base de datos.


Un saludo a todos! Sean bienvenidos a mi primer post del 2011 y en G3ekArmy, que mejor manera
de iniciar este ao que programando. Este post esta enfocado a personas que estn inicindose en
el mundo de la programacin (Con nociones de SQL y .Net), y presenta una gran tendencia del
software, utilizar una base de datos. As que crea tu aplicacin VB .Net + BD.
Que necesitamos para comenzar?
Visual Studio .Net 2008 y trabajaremos con los gestores de BD ms utilizados en la actualidad
(Drivers) el cul son SQL Server, Oracle y MySQL, as que comenzamos.
Un poco de teora:
Para enteder como funciona la tecnologia de ADO.Net necesitamos dejar claros algunos
conceptos:
Connection: Proporciona una conexin usada para comunicarse con la fuente de datos. Tambin
acta como Abstract Factory para los objetos command.
Command: Usado para realizar alguna accin en la fuente de datos, como lectura, actualizacin, o
borrado de datos relacionales.
Parameter: Describe un simple parmetro para un command. Un ejemplo comn es un parmetro
para ser usado en un procedimiento almacenado.
DataAdapter: Puente utilizado para transferir data entre una fuente de datos y un objeto DataSet
(ver abajo).
DataReader: Es una clase usada para procesar eficientemente una lista grande de resultados, un
registro a la vez.
Como vern nos ofrece interactuar con una base de datos, sin importar el proveedor.

Crear la base de datos:
Lo primero ser crear una base de datos llamada Usuarios y una tabla llamada Datos con las
siguientes caractersticas:
ID Entero Autoincrementable
Nombre Carcter No nulo
Edad Entero No nulo
Hobbies Carcter No nulo
Y sern todos los elementos, nos enfocaremos al uso de la tecnologia ADO.Net en un
ejemplo fcil pero entendible.

VB + SQL Server
Primero necesitamos crear un nuevo proyecto, y que sea una aplicacin de escritorio, al parecer
este modo ser mas fcil, ya que SQL Server es el gestor de BD por defecto en la plataforma .Net.
Sino estas muy bien familiarizado con bases de datos, puedes utilizar Microsoft SQL Server
Management Studio en su versin express.
Lo primordial ser disear nuestro formulario:

3 Botones y un Datagridview y un ComboBox con los valores por default : ID, nombre, edad, y
hobby

Ahora lo verdaderamente importante, momento de pasar a programar :D
Lo primero ser agregar los namespaces siguientes:

El namespace System.Data.SqlClient es el necesario para interactuar con la base de datos en el
proveedor SQL Server

Una vez terminado, ahora declaramos las variables que utilizaremos.

Estn 2 muy importantes la variable strConexion y Conexion, la primera solamente es del tipo
cadena y contiene la direccin de la base de datos, claro contiene ms informacin como el tipo
de proveedor, el usuario y la seguridad empleada. El objeto Conexion es declarado del
tipoSqlConnection y con parmetro el valor de strConexion. Las variables dtTabla y dsTabla ms
adelante las utilizaremos.
De donde obtenemos la cadena de conexin? Fcil, nos vamos al explorador de servidores que
se encuentra en el men ver. Una vez que nos salga el men agregamos una nueva conexin.


Seleccionamos el origen de datos Microsoft SQL Server (SqlClient), el nombre del servidor
es.\SQLEXPRESS que es nuestro proveedor, si todo sale bien en Seleccionar el nombre de la
base de datos, debe aparacer la que se creo anteriormente, en este caso USUARIOS. En la
ventana de propiedades se puede ver la propiedad Cadena de conexin, esa es la cadena que
utilizaremos.



Ahora crearemos un procedimiento llamado Actualizar, este procedimiento no lleva parmetros y lo
utilizaremos en el momento que se cargue el formulario, se ingrese un dato o se elimine, nos
actualizara el DataGridView con los nuevos datos. En esta parte utilizaremos las variables antes
declaradas dtTabla es del tipo DataTable representa una tabla con columnas y filas.

En este procedimiento al inicio llamamos al procedimiento clear() de dtTabla.Rows, con esto nos
aseguramos que en el momento que se llame a la funcin este limpia. Inmediatamente se declara
un SqlCommand llamado cmdDatos con los parametros Select * from Datos, y el objeto
conexin, esta consulta siempre se realizara en el momento que se mande a llamar a cmdDatos,
en este caso en el SqlDataAdapter, ahora se llama al procedimiento da.Fill(dtTabla) que se
encarga de llenar dtTable con el valor arrojado por nuestra consulta que se encuentra en
cmdDatos, en otras palabras, por todos los datos en la tabla. Al final el objeto DataGridView1 su
origen de datos ser dtTabla.

Ahora en el evento Load del formulario, se llama al procedimiento Actualizar(). Con la finalidad de
presentar todos los datos contenidos en la tabla al inicio del programa.

Ahora vamos a programar la parte de insertar datos.

En este cdigo al inicio declaramos un nuevo objeto llamado cmdInsertar del tipo SqlCommand,
este objeto se encarga de ejecutar las consultas deseadas, dentro de el hay 3 tipos bsicos de
ejecutar las consultas, la primera es ExecuteNonQuery se utiliza cuando una consulta no retorna
algn tipo de valor (INSERT, DELETE, UPDATE), la segunda es ExecuteScalar y esta se utiliza
cuando la consulta nos regresa solamente un valor, y la ltima es ExecuteReader y es cuando la
consulta regresa mltiples valores.
Declaramos nuestras variables del tipo cadena, y en InputBox recuperamos los valores. Despus
creamos una instancia del objeto cmdInsertar ahora como parmetros la consulta y el
objeto conexin, en esta consulta ingresamos los valores de nombre, edad, y hobby
mediante parmetros. Siempre es importante ya que le da mas seguridad a nuestra consulta.
Ahora se abre la conexin con el objeto Conexion.Open(), ejecutamos la consulta
concmdInsertar.ExecuteNonQuery(), actualizamos la informacin y cerramos la conexin. Como
vern resulta bastante fcil.

Ahora programaremos la opcin de eliminar:

Cuando se quiere eliminar, por lo regular se posee la informacin del elemento, en este caso sere
especifico. Vamos a eliminar por medio del ID que posee cada usuario en la base de datos. Se
declara cmdEliminar del tipo SqlCommand, y un ID de tipo entero. En ID se almacena el valor que
el usuario desea eliminar. Tenemos una condicin, si no hay elementos en la tabla no podemos
eliminar, eso se hace contando cuantos elemento posee la tabla con el
procedimientodtTabla.Rows.Count, en caso de haber elementos creamos una instancia de
SqlCommand con la consulta Delete from Datos Where Id=@id, tambin estamos mandando
por parmetro el valor de ID, abrimos la conexin, ejecuamos la consulta, actualizamos y cerramos
la conexin.

Por ltimo y no menos importante, la opcin de buscar:


Aqu tenemos las variables Valor y Criterio, porque? el criterio es el valor que el usuario
selecciona como bsqueda (id,nombre,edad,hobby) y valor obviamente es lo que se va a buscar.
Hay una condicin en el procedimiento, esta programada cuando se selecciona el Id u otro criterio
de bsqueda, un id es un valor que no se debe repetir, se puede repetir datos ms no id, al
momento de buscar el id debemos ser especficos, por eso esta el =. Pero si buscamos por otro
criterio se utiliza la clausula LIKE donde los valores encontrados son todos aquellos que coincidan
con el valor de bsqueda.

Ejecutamos y listo! Tenemos una aplicacin que se conecta a una BD en SQL Server 2005
La tecnologia de ADO.Net nos facilita esta conexin, es momento de hacerlo para MySQL y
Oracle. Se daran cuenta que gran parte del cdigo se reutiliza y nada ms se cambian los objetos
del namespace SystemData.SqlClient
VB + MySQL
Reutilizaremos el mismo formulario, pero antes de empezar a programar es importante
que descarguen el driver de MySQL para .Net y su motor de base de datos
Conector
http://dev.mysql.com/downloads/connector/net/

Motor BD MySQL
http://dev.mysql.com/downloads/mysql/

Una vez descargados, crearemos la base de datos usuarios, con la tabla datos y los mismos tipos
de datos.


Despues de instalar el motor de base de datos, y el conector, en el proyecto de Visual Studio
debemos agregar la referencia MySQL.Data, ese es el namespace que utilizaremos. Esto desde
el men Proyecto -> Agregar referencia


Tambin debemos poseer la cadena de conexin, de esta manera: Ingresando directamente esta
cadena
Server=nuestro_servidor;Database=NombreBD;Uid=Usuario;Pwd=Contrasea;

Agregamos nuestros namespaces y se darn cuenta que los objetos de esta clase no son tan
diferente al de la clase SqlClient

Los elementos diferentes entre ambas clases son que en SqlClient tenemos a SqlConnection,
SqlDataAdapter, SqlCommand Y en la clase Mysql.Data.SqlCliente son MysqlConnection,
MysqlDataAdapter, MysqlCommand. Como vern no son grandes cambios al cdigo xD.

Agregar:


Eliminar:


Buscar:


Y el procedimiento Actualizar

Como ven Es fcil, no? Ahora vamos con Oracle

VB + Oracle
Ya para finalizar este tutorial, vamos con el proveedor Oracle. Lo primero es descargar Oracle en
su versin 11g y el Oracle Data Provider para .Net.

Oracle Data Provider
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
Oracle Express Edition
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html

En este ltimo ejemplo utilizaremos el mismo diseo del formulario. Ademas crearemos en Oracle
la base de datos con las mismas caractersticas que las anteriores.
Importamos el namespace indicado:

Pero sin antes agregar la referencia Oracle.DataAcess.dll a nuestro proyecto.
Y su cadena de conexin: Data Source=Nombre_BD;User Id=Usuario;Password=Contrasea
Cdigo:
Declaramos nuestras variables


Agregar:


Eliminar:



Buscar:


Actualizar:


Con esto doy por finalizado mi tutorial, espero que les sea de utilidad y son bienvenidas las
criticas constructivas :D. Esperen las prximas entregas de como hacerlo para C# y Java. Y
por si deseas las descargas de los proyectos



Trabajas contra una base de datos Sql Server?
Si es as, yo suelo trabajar con Funciones de valores escalares.
Primeramente creara la Funcin en la base de datos como a continuacin:
create FUNCTION [dbo].[ExisteUsuario]
(
@pIDTabla Integer
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @vVal int

-- Add the T-SQL statements to compute the return value here
SELECT @vVal = COUNT([ID_TABLA]) FROM [TABLA] WHERE [ID_TABLA] =
@pIDTabla

-- Return the result of the function
RETURN @vVal

END

GO
En programacin para llamar a la funcin escalar de SQL Server sera algo as:
Public Function existeUsuario(ByVal pNIF As Integer) As Boolean
Dim retVal As Boolean = False
Dim comando As SqlCommand = Nothing
Dim conexion As SqlConnection = Nothing
Try
conexion = New SqlConnection("ConnectionString")
conexion.Open()

comando = New SqlCommand("SELECT dbo.ExisteUsuario(" & pNIF & ")", conexion)
comando.CommandType = CommandType.Text
retVal = (comando.ExecuteScalar()> 0

conexion.Close()
conexion = Nothing
Catch ex As Exception
retVal = False
If (Not IsNothing(conexion)) Then
conexion.Close()
conexion = Nothing
End If
MessageBox.Show(ex.Message)
End Try
Return retVal
End Function
La Funcin te devuelve True o False dependiendo de si existe o no el usuario.
Un saludo.
Public Shared Function Existe(ByVal nif As String) As Boolean
Dim numeroderegistros As Integer = 0

Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("default").ToString())
conn.Open()

Dim query As String = "SELECT COUNT(*) FROM PERSONAS WHERE Nif=@NIF"

Dim cmd As New SqlCommand(query , conn)
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.AddWithValue("@NIF", nif)

numeroderegistros = CInt(cmd.ExecuteScalar())
End Using

Return numeroderegistros > 0

End Function


Public Shared Function Existe(ByVal nif As String) As Boolean
Dim numeroderegistros As Integer = 0

Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("default").ToString())
conn.Open()

Dim query As String = "SELECT COUNT(*) FROM PERSONAS WHERE Nif=@NIF"

Dim cmd As New SqlCommand(query , conn)
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.AddWithValue("@NIF", nif)

numeroderegistros = CInt(cmd.ExecuteScalar())
End Using

Return numeroderegistros > 0

End Function


Public Function Existe(valor As String) As Boolean

Using cnn As New SqlConnection(cadenaConexion)

Dim cmd As SqlCommand = cnn.CreateCommand()
cmd.CommandText = "SELECT COUNT(*) FROM NombreTabla WHERE NombreCampo =
@param"
cmd.Parameters.AddWithValue("@param", valor)

cnn.Open()

Return (CInt(cmd.ExecuteScalar()) > 0)

End Using

End Function

Vuelvo con otra pregunta.... gracias a los foros pues se van solucionando cosas y aprendiendo
nuevas..
esta vez quiero controlar la entrada de datos a un DatagridView para evitar la duplicacin de
registros con el mismo Id. Tengo un DGV, no enlazado, al cual le he agregado columnas en su
propiedad columns, las columnas son:
"IdDetalle" - "IdProdcuto" - "Descripcin" - "Precio" - "Cantidad" - "SubTotal"
Falta una columna "IdAlbaran", se haya entre "IdDetalle" e "IdProducto" que tiene la propiedad
visible=False y no se muestra en este DGV pero se guarda en la BD. la propiedad
AllowUserToAddRow=false, los datos los agrego desde unos txtBox. Me he encontrado con
esta funcin que he querido implementar:
Private Function ExisteDatoEnGrid() As Boolean
Dim UltimaFila As Integer
Dim ValorCelda As String


UltimaFila = Me.DgvDetalles.Rows.Count - 1

ValorCelda = Me.DgvDetalles.Rows(UltimaFila).Cells(0)

For Each row As DataGridViewRow In Me.DgvDetalles.Rows

If row.Index = UltimaFila Then
Return False
Exit Function
End If

If System.Convert.ToString(row.Cells(0).Value) = ValorCelda Then
MsgBox("Este dato ya existe", MsgBoxStyle.Critical)
ExisteDatoEnGrid = True
Exit Function
Else
ExisteDatoEnGrid = False
End If
Next
Return False
End Function


Hola, voy a aplicar un mtodo para detectar si ya existe un registro tal como un DNI o una
matrcula en la base de datos y evitar el error de datos unicos en BD, he encontrado algunos
ejemplos buscando por la red, pero tambin he visto algn comentario en stos foros en los
que se comenta que es mejor utilizar la funcin EXIST de Transact-SQL ya que es mucho mas
eficiente que COUNT.

Por ahora he modificado ste cdigo para adaptarlo a mis necesidades, y parece que funciona, solo
que si est el valor me borra los campos textbox, seguramente porque el valor de la variable
rowcount busca el dato y rellena de nuevo la tabla.

Sabis algn mtodo mejor que el siguiente, o si podis revisar las siguientes lneas de cdigo para
mejorarlo, me sera de gran ayuda.
en que evento sera lo ms ideal ponerlo para que al moverse por la base de datos con el bindingnavigator no
saltara el evento?

Dim valor As String = TxtMatriculaBusca.Text
Dim rowcount As Integer = 0
Try
rowcount = Me.VEHICTableAdapter.FillByMatricula(Me.BaseDatos2DataSet.VEHIC, "%" &
Me.TxtMatriculaBusca.Text & "%")
Catch ex As Exception
MsgBox("Error :" & ex.Message)
End Try
If rowcount = 1 Then
MsgBox("La matrcula " & valor & " ya existe en la base de datos.")
TxtMatriculaBusca.Focus()
End If




Tambin he encontrado ste:




Dim numOrdenBuscada = 10254
Dim otroParam = 99
Dim sql As String = "SELECT COUNT(*) FROM Orders WHERE OrderID = @OrderID OR
otroParam = @OtroParam"
Dim cn As New SqlConnection("Data Source = .; Initial Catalog = Northwind; Integrated Security =
SSPI")
Dim cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add(New SqlParameter("OrderID", numOrdenBuscada))
cmd.Parameters.Add(New SqlParameter("OtroParam", otroParam))

cn.Open()

Dim numReg As Integer = CInt(cmd.ExecuteScalar())
If numReg > 0 Then
MessageBox.Show("El registro ya existe!")
Else
'Cdigo para insertar el registro
End If

Gracias de nuevo por vuestros consejos.


hola a todos.. Tengo un problema.. necesito saber si en mi base de datos ya existe un
dato.. que en este caso es un String.. es el nombre de una Materia.. la comprobacion
ya la hacia para un DNI y funciona de maravilla.. pero cuando quise utilizar para un
String no me anduvo.. aca les dejo el codigo..
Trabajo con Visual Basic 2008

Cdigo:
Dim conexion As New
SqlClient.SqlConnection(My.MySettings.Default.BD_MDFConnectionString)
conexion.Open()
Dim valor As Integer
Dim Comando As New SqlClient.SqlCommand()
Comando.CommandType = System.Data.CommandType.Text
Comando.CommandText = "SELECT DNI FROM Alumno WHERE DNI = '" &
MaskedTextBox1.Text & "'"
Comando.Connection = conexion
valor = Comando.ExecuteScalar
If valor = 0 Then
DNIMaskedTextBox.Text = MaskedTextBox1.Text
MaskedTextBox1.Visible = False
DNIMaskedTextBox.Visible = True
cargar()
conexion.Close()
Else
MsgBox("DNI Existente!", MsgBoxStyle.Exclamation)
conexion.Close()
End If


hola a todos.. Tengo un problema.. necesito saber si en mi base de
datos ya existe un dato.. que en este caso es un String.. es el nombre
de una Materia.. la comprobacion ya la hacia para un DNI y funciona
de maravilla.. pero cuando quise utilizar para un String no me
anduvo.. aca les dejo el codigo..
Trabajo con Visual Basic 2008

Cdigo vb:
Ver original
1. Dim conexion As New
SqlClient.SqlConnection(My.MySettings.Default.BD_MDFConnectionString)
2. conexion.Open()
3. Dim valor As Integer
4. Dim Comando As New SqlClient.SqlCommand()
5. Comando.CommandType = System.Data.CommandType.Text
6. Comando.CommandText = "SELECT Nombre FROM Materia WHERE Nombre = '"
& TextBox1.Text & "'"
7. Comando.Connection = conexion
8. valor = Comando.ExecuteScalar
9. If valor = 0 Then
10. NombreTextBox.Text = TextBox1.Text
11. cargar()
12. conexion.Close()
13. Else
14. MsgBox("Materia Existente!", MsgBoxStyle.Exclamation)
15. conexion.Close()
16. End If


espero que me puedan ayudar.. me tira este error ---> "La
conversin de la cadena "Bibliologa" en el tipo 'Integer' no es vlida"
Avisos Google
Hola piter2009. Pues ya te lo dice el error:
"La conversin de la cadena "Bibliologa" en el tipo 'Integer' no es vlida"
Campo Nombre es String
0 es Integer
Por tanto valor (String) = 0 (Integer) te dar error.
Cdigo VB.Net:
Ver original
1. If String.Format("{0}", valor) = "" Then

Por otro lado, te recomiendo que descartes totalmente esta forma de realizar bsquedas en la base de
datos para evitar resultados desastrosos por culpa de inyeccin SQL:
Cdigo VB.Net:
Ver original
1. Comando.CommandText = "SELECT Nombre FROM Materia WHERE Nombre = '" &
TextBox1.Text & "'"

En su lugar utiliza, por ejemplo, parmetros:
Cdigo VB.Net:
Ver original
1. Comando.CommandText = "SELECT Nombre FROM Materia WHERE Nombre = '@Nombre'"
2. Comando.Parameters.Add("@Nombre", SqlType.VarChar, 255).Value =
TextBox1.Text

Un saludo.
__________________
NO A LA GUERRA!!
Si ponemos a nuestros mensajes ttulos adecuados, la gente se animar ms a abrirlos y resultarn ms tiles en las
busquedas. No a los ayuuudaaa, urgenteee y similares!
#4 (permalink)
29/03/2010, 09:09
Ka0stj

Fecha de Ingreso: febrero-2010
Ubicacin: Mxico
Mensajes: 738
Antigedad: 4 aos, 2 meses
Puntos: 37

Respuesta: Como Comprobar si Ya existe en BD SQL

Tambin puedes utilizar en tu consulta un Select Count(Campo) from Tabla Where (Condicion) as no
tendrias problemas con los tipos de datos ya que te regresar un Integer.

Saluldos...

Vous aimerez peut-être aussi