Sqlite buscar y reemplazar

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Pablo2m
Hacker del Foro
Mensajes: 88
Registrado: 28 May 2008, 21:16
Ubicación: Agentina

Sqlite buscar y reemplazar

Mensaje por Pablo2m »

Hola:
Tengo una ¿tabla ?, la cual he creado asi :

Código: Seleccionar todo

SQLite_Exec($dbn,"CREATE TABLE blogspot (id INTEGER,bp TEXT, cantidad INTEGER, PRIMARY KEY (id), UNIQUE (bp) ON CONFLICT IGNORE);")
Como hago para ver si existe un item bp y si existe sumarle a cantidad un numero (digamos 1)

Gracias
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Sqlite buscar y reemplazar

Mensaje por BasicOs »

Hola, lo incluyes en el string a ejecutar algo parecido a :
http://dev.mysql.com/doc/refman/5.0/es/update.html
UPDATE items SET items.price=items.price+1 (se puede quitar items.)
WHERE items.id='adcdd'; ; condición

en http://www.programacionfacil.com/mysql:mysql_update
UPDATE nombretabla SET nomcolumna=nomcolumna+1 WHERE condicion ;

(UPDATE nombretabla SET nomcolumna=expresion WHERE condicion ;)
Mysql no es muy diferente a sqlite pero si lo deseas puedes comentar si hay diferencias, y contrastar como te quedó el code,

Salu22:)
Pablo2m
Hacker del Foro
Mensajes: 88
Registrado: 28 May 2008, 21:16
Ubicación: Agentina

Re: Sqlite buscar y reemplazar

Mensaje por Pablo2m »

Evidentemente no comprendo como es el asunto, cuando me meti con sqlite sospeche que esto pasaria, si no es mucha molestia ¿podrias indicarme que hacer?, arme un esqueleto de lo que intento

Código: Seleccionar todo

Func Afuera_wp ($meter)
	$Bandera= _SQLite_Exec ($dbn,"WHERE items.id='"$meter"'; condición" )
	If $Bandera  <> 0 then
   _SQLite_Exec ($DBN, "UPDATE wordpress SET cantidad=cantidad+1 WHERE condicion ")
	Else
	consolewrite(@CR &"Nombre del Wordpress: " & $meter )
    _SQLite_Exec($dbn,"INSERT INTO wordpress (wp,cantidad) VALUES ('"&$meter&"', 1);")
	EndIf
EndFunc
Pablo2m
Hacker del Foro
Mensajes: 88
Registrado: 28 May 2008, 21:16
Ubicación: Agentina

Re: Sqlite buscar y reemplazar

Mensaje por Pablo2m »

Andaba pensando que si es muy complicado lo podria hacer sin Sqlite, ¿Sqlite permite elementos repetidos?
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Sqlite buscar y reemplazar

Mensaje por BasicOs »

Permite elementos repetidos sin problemas, aunque puedes modificar esta propiedad al crear un indice más limitado, o bien en las propiedades.
No obstante no tiene tanto sentido tener datos exactamente iguales, iguales debes mirar algún manual para aprender un poco más sin problemas: :smt004 :smt004
Busca la palabra datos redundantes:
http://www.monografias.com/trabajos30/b ... atos.shtml
http://mit.ocw.universia.net/curso11208 ... re5-2.html

Más info aqui:
http://usuarios.multimania.es/cursosgbd/UD4.htm


Salu22:)
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Sqlite buscar y reemplazar

Mensaje por Chefito »

Pablo2m escribió:Como hago para ver si existe un item bp y si existe sumarle a cantidad un numero (digamos 1)
He utilizado el ejemplo de la ayuda de la función _SQLite_Exec y le he añadido una consulta que hace lo que tu quieres.

Código: Seleccionar todo

#include <sqlite.au3>
#include <sqlite.dll.au3>

Local $hQuery,$aRow
_SQLite_Startup()
ConsoleWrite("_SQLite_LibVersion=" &_SQLite_LibVersion() & @CRLF)
_SQLite_Open()
; Whithout $sCallback its an Resultless query
_SQLite_Exec(-1,"Create table tblTest (a,b int,c single not null);" & _
                "Insert into tblTest values ('1',2,3);" & _
                "Insert into tblTest values (34,5,-1);" & _
				"Insert into tblTest values (12,22,3);" & _
				"Insert into tblTest values (Null,5,6);")

_SQLite_Exec(-1,"update tblTest set b=b+1 where c=3") ; Si el campo c=3 entonces al campo b de los registros que coincidan con esta condición se le suma 1. 

$d = _SQLite_Exec(-1,"Select * From tblTest","_cb") ; _cb Will be called for each row
Func _cb($aRow)
	For $s In $aRow
		ConsoleWrite($s & @TAB)
	Next
	ConsoleWrite(@CRLF)
	; Return $SQLITE_ABORT ; Would Abort the process and trigger an @error in _SQLite_Exec()
EndFunc
_SQLite_Close()
_SQLite_Shutdown()
Con esta condición (c=3) coincide con dos registros, el 1º y 3º. Los campos b de estos registros son 2 y 22 respectivamente, a los que se le suma 1 quedando 3 y 23.
Te dejo un enlace con la documentación de sentencias sql para sqlite3: http://www.sqlite.org/lang.html

Espero haberte ayudado.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder