Gambas-it
Gambas3 => Programmazione => Topic aperto da: giob1642 - 13 Febbraio 2014, 16:38:22
-
salve in mysql ho una table pippo
con i segnenti campi id int, nome varchar (20), cognome varchar (30) comment ' giorgio'
in run time, fatta la comnnessione
public sub ambiaCommento()
dim a, b, c,e as string
din query as string
a="pippo" 'table
b="cognome" ' nome colonna
c=comment
d="franco" voglio sostituire giorgio con franco
DD. DBConnect(db_name)
'facendo ciò con alter table ho:
query "Alter table " & a & " CHANGE COLUMN " & b & & b & "varchar(30)" & c & d
'o meglio
query "Alter table " & a & " CHANGE COLUMN " & b & & b & & c & d
DD.MyRS = DD.MyConn.Exec(query)
' non ho usato le virgolette per rendere lo scritto più leggibile ma non funziona mai
end
su internet vi sono diversi esempi ( per es.http://dorkage.net/blog/2009/01/12/column-comments-in-mysql/) ma nell'usare le variabili e virgolette non funzionano;
qualcuno sa dirmi dove sbaglio?
grazie
giorgio
-
io non ho capito se vuoi cambiare il nome di una colonna o i dati contenuti in un record
-
ne l'uno ne l'altro, la struttura della tabella (costruita con phpmyadmin) la colonna cognome è così definita:
nome: cognome
tipo: varchar
len: 30
codifica caratteri:
attributi:
null:
........................
........................
comment: giorgio
in runtime con alter table voglio cambiare il valore di comment da giorgio a franco e tutto ciò usando delle variabili.
-
public sub ambiaCommento()
dim a, b, c,e as string
din query as string
a="pippo" 'table
b="cognome" ' nome colonna
c=comment
d="franco" voglio sostituire giorgio con franco
DD. DBConnect(db_name)
'facendo ciò con alter table ho:
query = " ALTER TABLE `pippo` CHANGE `cognome` `cognome` VARCHAR( 20 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT 'franco'"
'detta query funziona.
'usando le variabili invece ho:
query = " ALTER TABLE" & a & "CHANGE" & b & b & " VARCHAR( 20 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT" & d
Ma la query non funziona.
DD.MyRS = DD.MyConn.Exec(query)
end
qualcuno sa dirmi dove sbaglio?
grazie
giorgio
-
Dai un print query prima di eseguirla, nel terminale vedrai che la query no ha un sacco di spazi tra una parola e l'altra
-
nella query giusta:
query = " ALTER TABLE `pippo` CHANGE `cognome` `cognome` VARCHAR( 20 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT 'franco'"
sostuendo solo 'pippo' con '"& a &"'
"" con & a & od altro
la query da errore anche stando attento agli spazi tra i vari pezzi di stringa
giorgio
-
Solitamente il testo dell'' errore è esaustivo del problema,
allega il messaggio di errore oltre il risultato del
-
nella query giusta:
query = " ALTER TABLE `pippo` CHANGE `cognome` `cognome` VARCHAR( 20 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT 'franco'"
a="pippo
b="cognome"
d="franco"
sostuendo `pippo` con `"& a &"`
`cognome` con `"& b &"`
'franco' con '"& b &"'
ossia :
query = " ALTER TABLE `"& a &"` CHANGE `"& b &"` `"& b &"` VARCHAR( 20 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT '"& b &"'"
allora funziona.
E' tutta una quesione di apici ..........notare la differenza tra ` ed '; tra l'alto sulla tasiera italiana ` si scrive
Alt Gr & ù
La stessa simbologia deriva dal php ed è valida per create table, upgrade,insert
grazie lo stesso.
giorgio