Foros del Web » Programación para mayores de 30 ;) » .NET »

Insertar en bd Access con un campo autonumerico

Estas en el tema de Insertar en bd Access con un campo autonumerico en el foro de .NET en Foros del Web. Pues eso, que intento insertar los datos en una base de datos y me da fallo, el fallo me lo da porque tengo un campo ...
  #1 (permalink)  
Antiguo 11/08/2004, 16:32
 
Fecha de Ingreso: julio-2004
Mensajes: 50
Antigüedad: 19 años, 10 meses
Puntos: 0
Insertar en bd Access con un campo autonumerico

Pues eso, que intento insertar los datos en una base de datos y me da fallo, el fallo me lo da porque tengo un campo autonumerico y no se como acer para que no casque.

private void insertarUsuario(string usu, string pas, string mail, string nom, string ape, string dir, string ciu, string pro, string cp, string pais)
{
OleDbConnection conexion = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0; Data Source="
+Server.MapPath(@"bd/bd.mdb"));
conexion.Open();

string sql = "INSERT INTO Usuarios (Usuario, Clave, Mail, Nombre, Apellidos, Direccion, Ciudad, Provincia, Cp, Pais) VALUES" +
"('" + usu + "','" + pas + "','" + mail + "','" + nom + "','" + ape + "','" + dir + "','" + ciu + "','" + pro + "','" + cp + "','" + pais + "')";
OleDbCommand consulta = new OleDbCommand(sql, conexion);
consulta.ExecuteNonQuery();
conexion.Close();
}

Luego tengo el campo id que es autonumerico y supongo que el fallo este ay!!!
__________________
http://www.ivangm.tk
Mi mail
  #2 (permalink)  
Antiguo 11/08/2004, 16:52
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Si es autonumerico no puedes asignarle un id a ese campo ya que por eso es "autonumerico"

Haz tu insert con los campos normales pero obviamente no incluyas el campo autonumerico.. de eso se encarga tu BD..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 11/08/2004, 17:02
 
Fecha de Ingreso: julio-2004
Mensajes: 50
Antigüedad: 19 años, 10 meses
Puntos: 0
Ya, ya, asi lo hago, me referia a que el campo autonumerico se llama id, no tiene nada que ver, yo inserto el resto de los campos, eso no lo toco, pero me casca.
__________________
http://www.ivangm.tk
Mi mail
  #4 (permalink)  
Antiguo 13/08/2004, 05:38
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Prueba a hacer el Insert así, con parámetros

seleccionstringGprecios = " INSERT INTO DAT_Precios (Identificador) VALUES (@identificador)"

seleccionGprecios = New OleDbCommand(seleccionstringGprecios, conexionGprecios)
seleccionGprecios.Parameters.Add(New OleDbParameter("@identificador", OleDbType.Double, 12))
seleccionGprecios.Parameters("@identificador").Val ue = Server.HtmlEncode(lblidentificadorrecuperado.Text)

Esto es para una bd de access, pero vamos, las diferencias son mínimas, si es que las hay.
__________________
Pide lo que quieras...y luego paga por ello
  #5 (permalink)  
Antiguo 13/08/2004, 05:39
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
Por cierto...para qué esta "@" antes de la ruta?. Yo nunca la he utilizado...

(@"bd/bd.mdb"));

Un saludo.
__________________
Pide lo que quieras...y luego paga por ello
  #6 (permalink)  
Antiguo 13/08/2004, 06:07
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 5 meses
Puntos: 8
Supongo que será porque la ruta donde se encuentra la BD sera variable,entoces para formar la ruta completa será la variable que le pase(@) mas bd/bd.mdb
Por ejemplo,tiene la ruta en /eDu/ pues pasaría de variable /eDu/ y la variable entera quedaría con /eDu/bd/bd.mdb
Si me he confundido que me corrigan los sabios ^_^
Salu2
  #7 (permalink)  
Antiguo 13/08/2004, 06:25
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años
Puntos: 0
no sabía que "ahí" también se podía meter un parámetro...
__________________
Pide lo que quieras...y luego paga por ello
  #8 (permalink)  
Antiguo 13/08/2004, 06:29
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 5 meses
Puntos: 8
Pues supongo que se podrá,cuando el amigo lo ha hecho y no le da error será por algo,no? jejeje Salu2
  #9 (permalink)  
Antiguo 13/08/2004, 08:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Por cierto...para qué esta "@" antes de la ruta?. Yo nunca la he utilizado...
Lo que pasa es que en c# en algunos casos cuando se indican las rutas deben comenzar con una @, tambien en regular expressions..,para concatenar un string con un path..etc..(todo depende)

Aunque en el ejemplo anterior no es necesario poner la @.. solo basta con hacer..

Server.MapPath("bd/bd.mdb"));

Voy a buscar un ejemplo a la mano para que lo vean..

Salu2
  #10 (permalink)  
Antiguo 13/08/2004, 17:09
 
Fecha de Ingreso: julio-2004
Mensajes: 50
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias a tos, no se porque pero ahora ya me funciona.
Lo de la @ es por lo que dice RootK, exactamente por eso, yo la pongo en la ruta por costumbre.

Otra cosilla, para validar los campos que se van a insertar en la bd, supongo que tenga que recuperar la bd completa (para validar que el nombre de usuario sea unico) en un dataset por ejemplo, o bien hacer una consulta anterior a la bd que busque q el identificador no exista... weno me parece que me explique ;)
¿Que me recomendais?¿Existe otra manera mejor?
  #11 (permalink)  
Antiguo 13/08/2004, 17:23
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
supongo que tenga que recuperar la bd completa
Pudes manejar un datareader para hacer una query con un simple where para indicar que no existe ese usuario.

Cita:
select * from tabla
where usuario = "x" and password="y"
y sería algo como ésto: (dr = Datareader)

If dr.read 'encontro algo
..
reponse.write("Usuario existente")
Else
'Llamo a mi método para hacer el insert
End If

Y puedes hacer el insert usando un command y un ExecuteNonQuery

Salu2 y cualquier cosa por aqui andamos..
  #12 (permalink)  
Antiguo 13/08/2004, 17:59
 
Fecha de Ingreso: julio-2004
Mensajes: 50
Antigüedad: 19 años, 10 meses
Puntos: 0
okis okis, muxas gracias, es lo q tenia pensao, ahora toy con ello!!!

Salu2
__________________
http://www.ivangm.tk
Mi mail
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.