¿Cómo verificar la inserción de nuevos valores si ya existen?

Tengo una vista de cuadrícula y sqldatasource para vincular datos a la vista de cuadrícula.

  • Tengo 3 columnas en la base de datos: Nombre, Edad, Cumpleaños.
  • Tengo 3 cuadros de texto y un botón para agregar una nueva fila con valores de cuadros de texto en la tabla de datos, vista de cuadrícula.

Cuando hago clic en el botón para agregar una nueva fila con esa información, necesito verificar si el valor del cuadro de texto para "Nombre" ya existe en la tabla de datos en la columna "Nombre", si es así, la actualización se cancela y el usuario es se le pide que introduzca otro valor.

preguntado el 03 de mayo de 12 a las 19:05

¿Necesita más información, necesita verificar la base de datos y ver si el valor existe antes de insertarlo? ¿Qué columna estás revisando? No somos lectores de mentes en stackoverflow. -

Lo siento por esto, vuelva a mirar mi pregunta por favor. actualizado -

Una base de datos correctamente diseñada ya se encargará de esto por usted. El campo de nombre que nos está diciendo debe ser ÚNICO. Si es único (posiblemente la clave principal es el campo de nombre), el sistema db le gritará si vuelve a insertar un registro que existe. -

2 Respuestas

Es mejor que defina un índice único en el nombre de la columna de la tabla. Puede dejar que el código se ejecute sin verificar si el nombre existe o no. Volverá con un error si el nombre ya existe (que puede capturar y mostrar muy bien al usuario); y tiene éxito si el nombre no existe en la tabla.

No sé qué base de datos usa, pero algo como esto debería funcionar en la mayoría de las bases de datos.

CREATE UNIQUE INDEX index_name
ON your_table (name)

contestado el 03 de mayo de 12 a las 20:05

Estoy usando Sql Database, ¿puedo preguntar qué debo hacer con su código? gracias. - Alexander

@Alexander ejecuta la declaración de SQL en su base de datos directamente. Conéctese a su base de datos con SQL Server Management Studio o con Visual Studio directamente. - Ícaro

Ejecute la declaración cada vez que agregue una nueva fila o? ... lo siento, nunca escuché sobre eso y nunca lo usé. gracias - Alexander

No, estoy hablando de crear un índice en una tabla. No le estoy diciendo que ejecute esa declaración cada vez que se inserta una fila. Y más cuando hablamos de crear un índice. Necesita leer sobre bases de datos y especialmente índices: en.wikipedia.org/wiki/Database_index - Ícaro

sí, ya tengo una columna de índice de base de datos. (clave principal, incremento automático en 1, semilla en 1) - Alexander

La solución más simple basada en cómo entiendo su pregunta sería ejecutar una consulta rápida antes de hacer una inserción.

SELECT COUNT(*) FROM tblName WHERE Name = @Name

Y, si el valor es cero, no tiene nada en su base de datos que coincida con ese nombre. Alternativamente, si desea encontrar la ID del nombre coincidente al seleccionar, probablemente desee configurar un procedimiento almacenado. Tener un valor de retorno que inicialmente consulta por nombres coincidentes, y: SI (@ReturnValue es nulo), realice la inserción y devuelva el valor con

SELECT SCOPE_IDENTITY()

contestado el 03 de mayo de 12 a las 20:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.