conexión a base de datos

Upload: ficoramos

Post on 16-Oct-2015

371 views

Category:

Documents


2 download

TRANSCRIPT

1. Conexin a Base de datos .sdf para Windows Mobile 5Hola chicos.

A ver si me podis echar una mano, estoy programando conVB.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:

ImportsSystemImportsSystem.Data.SqlClient

--- COMIENZO CADENA DE CONEXINHe 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.

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

-------------------------------FIN CADENA CONEXINDimmyConnectionAsNewSqlConnection(myConnString)DimmyCommandAsNewSqlCommand()DimmyReaderAsSqlDataReadermyCommand.CommandType = Data.CommandType.StoredProceduremyCommand.Connection = myConnectionmyCommand.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.ExecuteReaderDimValorAsStringValor = 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.SqlCeConnectionConexion.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 textual2. 20 de agosto de 2009,10:52#2jarogo

InfinitoFecha de registro:16 de octubre de 2006Desde:Galicia - EspaaMensajes:2.388Dispositivo mvil:Impresionante emuladorSistema operativo:No tengo nada

Hola!

el problema es que la cadena de conexin a una base de datos sdf tiene que ser de tipoSqlCeConnection, 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 textual3. 20 de agosto de 2009,10:58#3blimo86

InicianteFecha de registro:28 de noviembre de 2006Mensajes:8Dispositivo mvil:ningunoSistema 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.SqlCeConnectionConexion.ConnectionString = ("Data Source =" + (System.IO.Path.GetDirectoryName(System.Reflection .Assembly.GetExecutingAssembly.GetName.CodeBase) _+ ("\MedyserPartes.sdf;" _+ ("Password =" + """pass"";"))))

DimmyConnectionAsNewSqlCeConnection(Conexion)DimmyCommandAsNewSqlCeCommand()DimmyReaderAsSqlCeDataReadermyCommand.CommandType = Data.CommandType.StoredProceduremyCommand.Connection = myConnectionmyCommand.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.ExecuteReaderDimValorAsStringValor = 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 textual4. 20 de agosto de 2009,11:18#4jarogo

InfinitoFecha de registro:16 de octubre de 2006Desde:Galicia - EspaaMensajes:2.388Dispositivo mvil:Impresionante emuladorSistema 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):

DimmyConnectionAsNewSqlCeConnection("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 las11:20-Estas gorda, ehh!!!-Si, como una tapia...Respuesta con cita textual5. 19 de octubre de 2010,23:44#5pablolaq

IntermitenteFecha de registro:19 de octubre de 2010Desde:ArgentinaMensajes:46Dispositivo mvil:EmuladorSistema operativo:Windows Mobile 6.5 o anteriorGraciasPublicado originalmente porjarogommmm, casi: tienes declaradas 2 veces un sqlCeConnection (Conexion y myConnection), te sobra una.

Sera algo como esto (tambin sin probar):

DimmyConnectionAsNewSqlCeConnection("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 proyectoVamos 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 StudioCuando 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), etcProblema

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 .exestring 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 copiaEsta 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 Originaly el nombre de tu Tabla

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

Imports System.DataImports System.Data.SqlClientPublic 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 DataSetCad.Fill(Tbl)

If Tbl.Tables[0].Rows.Count > 0ThenMessageBox.Show("El usuario se logueo", "Correcto", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)ElseMessageBox.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:SQLConnectionSQL CommandStored Procedured SQL SERVER 2005Si ya tenemos el formulario, ahora hay que agregarle el cdigo. Empezaremos por agregarle en el encabezado antes de Public Class Form1 esto:ImportsSystem.Data.SqlClientEste 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 SqlConnectionDim cmd As SqlCommandDim dr As DataRowDim conexion As String = Data Source=.;Initial Catalog=dbDemo;Integrated Security=trueColoreo 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 AltasALTER PROCEDURE dbo.spAltaCliente@prmId int,@prmNombre nvarchar(50),@prmDireccion nvarchar(50),@prmNegocio nvarchar(50)ASINSERT INTO CLIENTES (ID,NOMBRE,DIRECCION,NEGOCIO)VALUES (@prmId,@prmNombre,@prmDireccion,@prmNegocio)RETURNCdigo del Botn Altascnn = New SqlConnection(conexion)cnn.Open();cmd=New SqlCommand(spAltaCliente,cnn)cmd.CommandType = CommandType.StoredProcedurecmd.Parameters.Add(@prmClave,SqlDbType.Int).Value= Convert.ToInt16(TextBox1.Text)cmd.Parameters.Add(@prmNombre, SqlDbType.NVarChar).Value = TextBox2.Textcmd.Parameters.Add(@prmDireccion, SqlDbType.NVarChar).Value = TextBox3.Textcmd.Parameters.Add(@prmNegocio, SqlDbType.NVarChar).Value = TextBox4.Textcmd.ExecuteNonQuery()MessageBox.Show(ClienteActivado)TextBox1.Text = TextBox2.Text = TextBox3.Text = TextBox4.Text = Stored Procedure EliminarCREATE PROCEDURE dbo.spEliminaCliente@prmId intASDELETE FROM CLIENTES WHERE ID=@prmIdRETURN

Cdigo del Butn Eliminarcnn = New SqlConnection(conexion)cnn.Open()cmd = New SqlCommand(spEliminaCliente, cnn)cmd.CommandType = CommandType.StoredProcedurecmd.Parameters.Add(@prmClave,SqlDbType.Int).Value= Convert.ToInt16(TextBox1.Text)cmd.ExecuteNonQuery()MessageBox.Show(ClienteELIMINADO)TextBox1.Text = TextBox2.Text = Stored Procedure ModificarCREATE PROCEDURE dbo.spModificaCliente@prmId int,@prmNombre nvarchar(40)ASUPDATE clientes SET nombre=@prmNombre WHERE Id=@prmIdRETURNCdigo del Botn Modificarcnn = 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.Textcmd.ExecuteNonQuery()MessageBox.Show(ClienteModificado)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 siguientesentencia:

SELECT*FROMINFORMATION_SCHEMA.COLUMNSWHERECOLUMN_NAMELIKE'%Nombre_Campo_a_Buscar%'

Al ejecutar la consulta anterior nostraertodas las tablas que contienen el nombre que estamos buscando y tener en cuenta que estamos usando la condicinLIKEcon el%la cual nostraer las tablas en donde el campo coincida con parte del testo mencionado. Si se quiere buscar el campo exacto quitar%o mejor cambiarLIKEel por=

Objetivos del tutorialEn 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.NotaSQL 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 2005Ejercicio 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 EditionEn 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 proyecto1. Inicie Visual Studio 2005 haciendo clic enInicio|Todos los programas|Microsoft Visual Studio 2005|Microsoft Visual Studio 2005.2. Haga clic enArchivo|Nuevo|Proyectopara crear una aplicacin nueva de Windows Forms3. En el cuadro de dilogoNuevo proyectoenTipos de proyecto, busqueVisual C#|WindowsNotaDependiendo de la configuracin de Visual Studio,Visual C#quizs aparezca incluido enOtros idiomas.4. En el cuadroPlantillas, seleccioneAplicacin para Windows5. Cambie elNombreaRADDataDemo, como se muestra en la figura 1 y, a continuacin, haga clic enAceptarNotaPuede crear el proyecto en laUbicacinde su eleccin.

Figura 1. Cuadro de dilogo Nuevo proyectoVisual 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 existentePara crear una base de datos SQL Server Compact Edition como origen de datosEl 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 enDatos|Mostrar orgenes de datospara abrir el panel deOrgenes de datos Dentro del panelOrgenes de datos, haga clic en el botnAgregar nuevo origen de datossituado en la parte superior izquierda del panelOrgenes de datos, como se muestra en la figura 2.Aparecer elAsistente para la configuracin de orgenes de datos.

Figura 2. Hacer clic en Agregar nuevo origen de datos SeleccioneBase de datoscomo tipo de origen de datos y haga clic enSiguiente, 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 pginaElegir la conexin de datos, haga clic enNueva conexin.NotaSi 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 dilogoElegir origen de datos, seleccioneMicrosoft SQL Server 2005 Compact Editiony, a continuacin, haga clic enContinuar, como se muestra en la figura 4.

Figura 4. Cambiar el origen de datos En el cuadro de dilogoAgregar conexin, asegrese de que la opcinMi PCest seleccionada comoOrigen 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 dilogoAgregar conexin, haga clic enExaminarpara abrir el cuadro de dilogo de seleccin de archivos.

Figura 5. Agregar una conexin Seleccione el archivoC: \Archivos de Programa\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0\Northwind.sdfen el cuadro de dilogo de seleccin de archivos y haga clic enAbrirpara seleccionar la base de datos. En el cuadro de dilogoAgregar conexin, haga clic enProbar conexinpara 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 enAceptarpara descartar el cuadro de dilogoLa conexin de prueba se realiz correctamente. Haga clic enAceptardentro del cuadro de dilogoAgregar conexin, ahora que ha probado correctamente la conexin. En este momento, puede ampliar laCadena de conexinen el cuadro de dilogoElegir la conexin de datospara 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 enSiguientedentro del cuadro de dilogoElegir 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 enSpara 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 verificacinS, guardar esta conexin comoest marcada. Salga de la cadena de conexin llamadaNorthwindConnectionStringy, a continuacin, haga clic enSiguiente, 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 pginaElija los objetos de base de datos, expandaTablasy marque las tablasCustomers,Employees,OrdersyShipperspara 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 elNombre del conjunto de datosNorthwindDataSety, a continuacin, haga clic enFinalizar, como se muestra en la figura 9Visual Studio crea el conjunto de datos, que se har visible en el panelOrgenes de datos.Para crear los elementos de formulario de una tabla en un conjunto de datosMediante 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 tablaOrderspara mostrar la lista de columnas de tabla.3. Seleccione el cuadro desplegable enOrdersy elijaDetalles, como se muestra en la figura 10.Al elegirDetalles, 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 Detalles4. Cambie el control predeterminado para la columnaOrder IDa una etiqueta haciendo clic en el cuadro desplegable deOrder IDy seleccionandoEtiqueta. De modo similar, cambie los controles predeterminados para las columnasCustomer ID,Employee IDyShip ViaaCuadro combinado.5. Arrastre la tablaOrdersy 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 formulario6. Arrastre la tablaCustomersalCuadro combinadoCustomer IDdel formulario. De esta forma, Visual Studio crea un vnculo entre la tablaCustomersy elCuadro combinado, de modo que las selecciones enumeradas en el cuadro desplegable delCuadro combinadose 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 tablaCustomers, la primera columna de cadena que no forma parte de la clave principal es la columnaLastName.7. Usando la misma tcnica que en el paso anterior, cree los enlaces de datos para rellenar el cuadro desplegable delCuadro combinadoEmployee IDyCuadro combinado Ship Viacon el contenido de la tablaEmployeesy la tablaShippersrespectivamente.8. Ample el formulario en la parte derecha, de modo que haya espacio para colocar un controlCuadro de imagen.9. Haga clic enVista|Cuadro de herramientaspara abrir el panelCuadro de herramientasy ampliar losControles comunes.10. Arrastre el controlCuadro de imagendelCuadro de herramientasal rea vaca en la parte derecha del formulario.11. Haga clic en el botn con flecha de etiquetas inteligentes en la parte superior derecha delCuadro de imagenpara mostrar el men de etiquetas inteligentes. En el men de etiquetas inteligentes, cambie la propiedadModo de tamaoaAjustar tamao automticamente, como se muestra en la figura 12. Cuando establezca la propiedadModo detamaoaAjustar tamao automticamente, elCuadro de imagencambia automticamente de tamao segn el de la imagen mostrada.

Figura 12. Seleccin del Modo de tamao del Cuadro de imagen12. En el panelOrgenes de datos, ample la tablaEmployeesy arrastre la columnaPhotoal controlCuadro de imagenque acaba de crear. A continuacin, Visual Studioautomticamente enlaza el Cuadro de imagen a la columna Photo.NotaPodra haber creado los datos enlazadosCuadro de imagenarrastrando la columnaPhotodirectamente del panel Orgenes de datos del formulario como hizo con las columnas de la tablaOrders. La tcnica alternativa de colocar primero elCuadro de imagenen el formulario y, a continuacin, arrastrar la columnaPhotodel panel Orgenes de datos aCuadro 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 aplicacin1. En Visual Studio, haga clic enDepurar|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 ejecucin2. Cambie el valor en el campoShip CountrydeItalyaItaliay haga clic en el iconoGuardar 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 enDepurar|Iniciar la depuracinen Visual Studio.5. Tenga en cuenta que el valor deShip Countryes ahoraItalia, 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 2005En 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 existente1. En Visual Studio, haga clic enVista|Explorador de servidores.Aparecer el panelExplorador 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 existentes2. En el panel Explorador de servidores enConexiones de datos, ampleNorthwind.sdfy, a continuacin,Tablaspara 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 tablaOrders, haga clic con el botn secundario en la tablaOrdery seleccioneAbrir.Los datos de la tablaOrdersse 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 tablaOrders.

Figura 15. La vista de tabla de los datos de OrdersCuando 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 subdirectoriobin\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, seleccionePropiedadesy, a continuacin, establezca la propiedadCopiar en el directorio de resultadosenCopiar siempre.4. Cierre la ventana de la tablaOrders.Para crear una base de datos nueva1. En el panelExplorador de servidores, haga clic con el botn secundarioConexiones de datosy seleccioneAgregar conexin...para mostrar el cuadro de dilogoAgregar conexin.2. En el cuadro de dilogoAgregar conexin, si el campoOrigen de datosno est establecido enMicrosoft SQL Server Compact Edition, haga clic enCambiar...y cambie el valor aMicrosoft SQL Server Compact Edition.3. En el cuadro de dilogoAgregar conexin, asegrese de que la opcinMi PCest seleccionada comoOrigen de datos.4. An en el cuadro de dilogoAgregar conexin, haga clic enCrear.Aparecer el cuadro de dilogoCrear 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 Edition5. 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 llamadaC: \MyProjects, escriba el nombre de archivo de base de datos comoC:\MyProjects\NewDatabase.sdf.NotaSQL Server Compact Edition no requiere que dote al nombre de archivo de una extensin.sdf. Sin embargo, es recomendable que siempre use la extensin.sdfal 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. CompruebeCifradopara 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 palabracontraseatanto en los camposNueva contraseacomoConfirmar contrasea.8. Haga clic enAceptar.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 palabracontraseacomo contrasea de la base de datos.

Figura 17. Cuadro de dilogo de aviso de requisitos mnimos de seguridad de contrasea9. Haga clic enSpara continuar usando la contrasea seleccionada.10. El cuadro de dilogoAgregar conexindebe aparecer en este momento, como se muestra en la figura 18. Haga clic enAceptarpara 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 panelExplorador de servidores.

Figura 18. Agregar una conexin a una base de datos nueva protegida por contraseaPara crear tablas en una base de datos1. En el panelExplorador de servidores, ample la conexin de datosNewdatabase.sdfque acaba de crear.2. Haga clic con el botn secundario enTablasy seleccioneCrear tabla.Aparecer la ventanaNueva tabla.3. EscribaCustomeren el campoNombrepara establecer el nombre de la tabla nueva.4. Agregue una columna haciendo clic en la celda bajo el encabezadoNombre de columnay escriba el nombre de la columna. LlameIda esta columna.5. Ahora, establezca a los descriptores restantes de la columna: Establezca elTipo de datosenint,Permitir valores nulosenNo,nicoenS, yClave principalenS, como se muestra en la figura 19.La columnaIdse usar como campo clave principal.NotaPara una tabla con una clave principal multiparte, establezca el valorClave principalenSpara cada una de las columnas que componen la clave principal.6. Agregue una columna llamadaNombrey mantenga sus valores asociados como predeterminados, tal y como se muestra en la figura 19.

Figura 19. Agregar columnas a una tabla nueva7. Haga clic enAceptarpara crear la tabla.Visual Studio crea la tablaCliente. Ahora, se ve la tablaClienteen el panelExplorador de servidores, como se muestra en la figura 20.

Figura 20. Tabla recientemente creada Cliente8. Haga clic con el botn secundario en la tablaClientey seleccioneAbrirAparecer una tabla vaca que enumera los datos en la tablaCliente.9. Agregue un registro a la tablaClientecon101comoIdyFredcomoName.10. Agregue otro registro a la tablaClientecon102comoIdyBarneycomoName.Ha agregado correctamente dos registros a la tablaCliente, como se muestra en la figura 21.

Figura 21. Tabla Cliente con las entradas nuevas11. Cierre la vista de la tablaClientehaciendo clic en laXque se encuentra en la esquina derecha de la vista. Los datos de cada fila se guardaron en la tablaClientecuando 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 nueva1. En el panelExplorador de servidores, ample la conexin de datos paraNewdatabase.sdfsi no est ya ampliada.2. Haga clic con el botn secundario enTablasy seleccioneNueva consulta.El cuadro de dilogoAgregar tablaaparece 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 tablaCliente.3. Seleccione la tablaClientey haga clic enAdd 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 enCerrarpara cerrar el cuadro de dilogo Agregar tabla.5. Compruebe el cuadro situado a la izquierda de las columnasIdyNombrede la tablaClientepara 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 clusulaWHERE 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 Cliente7. Ejecute la consulta haciendo clic enDiseador de consultas|Ejecutar SQLen Visual Studio.Aparecer un mensaje que solicita el valor del [email protected]. Escriba el textof%como valor del parmetro@namepara que la consulta devuelva todos los registros en los que el campo del nombre empiece con la letra f. Haga clic enAceptarpara ver los resultados de consulta.Se mostrarn los resultados de la consulta, como se aprecia en la figura 23.

Figura 23. Resultados de la consulta9. Cierre la ventana del Diseador de consultas haciendo clic en la X situada en la esquina izquierda de la ventanaMantenimiento de la base de datosEl 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 panelExplorador de servidores, haga clic con el botn secundario en la conexin de datos paraNewdatabase.sdfy seleccionePropiedades de la base datos.Aparecer la ventanaPropiedades de la base de datos, como se aprecia en la figura 24.

Figura 24. Ventana de Propiedades de la base de datos2. Tenga en cuenta que la ventana dePropiedades de la base de datosabre la pginaGeneral, que muestra las estadsticas relativas a la base de datos conectada.3. Seleccione la pginaReducir y repararpara mostrar las opciones de compresin y reparacin de la base de datos.4. Seleccione la pginaEstablecer contraseapara mostrar una pgina que le permite cambiar la contrasea de la base de datos5. Haga clic enCancelarpara cerrar la ventanaPropiedades 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 queestninicindoseen el mundo de laprogramacin (Connocionesde 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 yMySQL, as que comenzamos.Un poco de teora:Para enteder como funciona la tecnologia deADO.Netnecesitamos 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 llamadaUsuariosy una tabla llamadaDatoscon las siguientescaractersticas:ID Entero AutoincrementableNombreCarcterNo nuloEdad Entero No nuloHobbiesCarcterNo nuloY sern todos los elementos, nos enfocaremos al uso de la tecnologia ADO.Net en un ejemplofcilpero entendible.VB + SQL ServerPrimero necesitamos crear un nuevo proyecto, y que sea una aplicacin de escritorio, al parecer este modo ser masfcil, 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 utilizarMicrosoft SQL Server Management Studioen suversinexpress.Lo primordial ser disear nuestro formulario:

3 Botones y un Datagridview y un ComboBox con los valores por default : ID, nombre, edad, y hobbyAhora lo verdaderamente importante, momento de pasar a programar :DLo primero ser agregar los namespaces siguientes:

El namespaceSystem.Data.SqlClientes el necesario para interactuar con la base de datos en el proveedor SQL ServerUna vez terminado, ahora declaramos las variables que utilizaremos.

Estn2 muy importantes la variablestrConexionyConexion,la primera solamente es del tipo cadena y contiene la direccin de la base de datos, claro contiene msinformacincomo el tipo de proveedor, el usuario y la seguridad empleada. El objetoConexiones declarado del tipoSqlConnectiony conparmetroel valor destrConexion. Las variables dtTabla y dsTabla ms adelante las utilizaremos.De donde obtenemos la cadena deconexin?Fcil, nos vamos al explorador de servidores que se encuentra en elmen ver. Una vez que nos salga el men agregamos una nuevaconexin.

Seleccionamos el origen de datosMicrosoft SQL Server (SqlClient),el nombre del servidor es.\SQLEXPRESSque 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 llevaparmetrosy 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 procedimientoclear()dedtTabla.Rows, con esto nos aseguramos que en el momento que se llame a la funcin este limpia. Inmediatamente se declara unSqlCommandllamado cmdDatoscon los parametrosSelect * 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 procedimientoda.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 objetoDataGridView1su origen de datos serdtTabla.Ahora en el evento Load del formulario, se llama al procedimientoActualizar().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 regresamltiplesvalores.Declaramos nuestras variables del tipo cadena, y en InputBox recuperamos los valores.Despus creamos una instancia del objeto cmdInsertar ahora comoparmetrosla consulta y el objetoconexin, en esta consulta ingresamos los valores de nombre, edad, y hobby medianteparmetros. Siempre es importante ya que le da mas seguridad a nuestra consulta. Ahora se abre laconexincon el objetoConexion.Open(), ejecutamos la consulta concmdInsertar.ExecuteNonQuery(), actualizamos lainformaciny cerramos laconexin. Como vern resulta bastantefcil.Ahora programaremos laopcinde eliminar:

Cuando se quiere eliminar, por lo regular se posee lainformacindel 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 unacondicin, 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 consultaDelete from Datos Where Id=@id,tambinestamos mandando porparmetroel valor de ID, abrimos laconexin, ejecuamos la consulta, actualizamos y cerramos laconexin.Por ltimo y no menos importante, laopcinde buscar:

Aqu tenemos las variables Valor y Criterio, porque? el criterio es el valor que el usuario selecciona comobsqueda(id,nombre,edad,hobby) y valor obviamente es lo que se va a buscar. Hay unacondicinen el procedimiento, esta programada cuando se selecciona el Id u otro criterio debsqueda, un id es un valor que no se debe repetir, se puede repetir datos ms no id, al momento de buscar el id debemos serespecficos, 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 debsqueda.

Ejecutamos y listo! Tenemos unaaplicacinque se conecta a una BD en SQL Server 2005La tecnologia de ADO.Net nos facilita estaconexin, es momento de hacerlo para MySQL y Oracle. Se daran cuenta que gran parte delcdigose reutiliza y nada ms se cambian los objetos del namespace SystemData.SqlClientVB + MySQLReutilizaremos el mismo formulario, pero antes de empezar a programar es importante quedescarguenel driver de MySQL para .Net y su motor de base de datosConectorhttp://dev.mysql.com/downloads/connector/net/Motor BD MySQLhttp://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 elmen Proyecto -> Agregar referencia

Tambindebemos poseer la cadena deconexin, de esta manera: Ingresando directamente esta cadenaServer=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 ActualizarComo ven Es fcil, no? Ahora vamos con OracleVB + OracleYa 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 Providerhttp://www.oracle.com/technetwork/topics/dotnet/index-085163.htmlOracle Express Editionhttp://www.oracle.com/technetwork/database/express-edition/downloads/index.htmlEn este ltimo ejemplo utilizaremos el mismo diseo del formulario. Ademas crearemos en Oracle la base de datos con las mismascaractersticasque las anteriores.Importamos el namespace indicado:

Pero sin antes agregar la referenciaOracle.DataAcess.dlla nuestro proyecto.Y su cadena de conexin:Data Source=Nombre_BD;User Id=Usuario;Password=ContraseaCdigo: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 lasprximasentregas 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 intASBEGIN-- Declare the return variable hereDECLARE @vVal int

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

-- Return the result of the functionRETURN @vVal

END

GOEn 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 FunctionLa 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 funcinEXIST 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 sipodisrevisar 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.TextDim rowcount As Integer = 0Tryrowcount = Me.VEHICTableAdapter.FillByMatricula(Me.BaseDatos2DataSet.VEHIC, "%" & Me.TxtMatriculaBusca.Text & "%")Catch ex As ExceptionMsgBox("Error :" & ex.Message)End TryIf rowcount = 1 ThenMsgBox("La matrcula " & valor & " ya existe en la base de datos.")TxtMatriculaBusca.Focus()End If

Tambin he encontrado ste:

DimnumOrdenBuscada = 10254DimotroParam = 99DimsqlAsString="SELECT COUNT(*) FROM OrdersWHERE OrderID = @OrderID OR otroParam = @OtroParam"DimcnAsNewSqlConnection("Data Source = .; Initial Catalog = Northwind; Integrated Security = SSPI")DimcmdAsNewSqlCommand(sql, cn)cmd.Parameters.Add(NewSqlParameter("OrderID", numOrdenBuscada))cmd.Parameters.Add(NewSqlParameter("OtroParam", otroParam))cn.Open()DimnumRegAsInteger=CInt(cmd.ExecuteScalar())IfnumReg > 0ThenMessageBox.Show("El registro ya existe!")Else'Cdigo para insertar el registroEndIf 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 original1. Dim conexion As New SqlClient.SqlConnection(My.MySettings.Default.BD_MDFConnectionString)2. conexion.Open()3. Dim valor As Integer4. Dim Comando As New SqlClient.SqlCommand()5. Comando.CommandType = System.Data.CommandType.Text6. Comando.CommandText = "SELECT Nombre FROM Materia WHERE Nombre = '" & TextBox1.Text & "'"7. Comando.Connection = conexion8. valor = Comando.ExecuteScalar9. If valor = 0 Then10. NombreTextBox.Text = TextBox1.Text11. cargar()12. conexion.Close()13. Else14. 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 GoogleHola piter2009. Pues ya te lo dice el error:"La conversin de la cadena "Bibliologa" en el tipo 'Integer' no es vlida"Campo Nombre es String0 es IntegerPor tanto valor (String) = 0 (Integer) te dar error.Cdigo VB.Net:Ver original1. 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 original1. Comando.CommandText = "SELECT Nombre FROM Materia WHERE Nombre = '" & TextBox1.Text & "'" En su lugar utiliza, por ejemplo, parmetros:Cdigo VB.Net:Ver original1. 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 mensajesttulosadecuados, 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

Ka0stjFecha de Ingreso: febrero-2010Ubicacin: MxicoMensajes: 738Antigedad: 4 aos, 2 mesesPuntos: 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...