[SQL e VB.NET] - Aggiornare dati

sabato 14 ottobre 2006 - 20.46

noterror Profilo | Newbie

Ciao a tutti,

allora ho un problema con un database access ed un sql...

allora, quando tento di aggiornare una tabella con l'istruzione update mi dà un errore del tipo "Object non referenced" etc..

secondo..

come posso connettermi ad un database mysql che si trova in remoto??

grazie mille

lbenaglia Profilo | Guru

>allora ho un problema con un database access ed un sql...

Ciao noterror,

cosa intendi con "un sql"?
Ti riferisci ad una query SQL?

>allora, quando tento di aggiornare una tabella con l'istruzione
>update mi dà un errore del tipo "Object non referenced" etc..
Prova a postare il comando di UPDATE e la struttura della tabella che vuoi aggiornare, probabilmente c'è qualche errore nella query.

>secondo..
>
>come posso connettermi ad un database mysql che si trova in remoto??
Purtroppo non conosco MySQL, ma credo che sia sufficiente installare il driver ODBC sul client e configurare un DSN che punti al database remoto.

>grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

>cosa intendi con "un sql"?
Intendevo un database MySql

>Prova a postare il comando di UPDATE e la struttura della tabella che vuoi aggiornare, probabilmente c'è qualche errore nella query.
allora: la struttura della tabella è:
campo1, campo2 e campo3

la struttura dell'update è: UPDATE tabella SET campo1= ' valore_numerico ', campo2 = 'caratteri' WHERE key = 3


>Purtroppo non conosco MySQL, ma credo che sia sufficiente installare il driver ODBC sul client e configurare un DSN che punti al database remoto.

io conosco già l'indirizzo IP del server Mysql...

lbenaglia Profilo | Guru

>>Prova a postare il comando di UPDATE e la struttura della tabella che vuoi aggiornare, probabilmente c'è qualche errore nella query.
>allora: la struttura della tabella è:
>campo1, campo2 e campo3
>
>la struttura dell'update è: UPDATE tabella SET campo1= ' valore_numerico
>', campo2 = 'caratteri' WHERE key = 3

Dato che utilizzi MySQL non puoi postare il comando CREATE TABLE, alcune righe di prova, la query REALE ed il messaggio d'errore preciso?

A prima vista lo "pseudo comando" che hai postato è sbagliato perché se il data type di Campo1 è numerico, quando lo valorizzi non devi racchiudere il numero tra apici.
Inoltre key è una colonna che non esiste nella tabella...

>>Purtroppo non conosco MySQL, ma credo che sia sufficiente installare il driver ODBC sul client e configurare un DSN che punti al database remoto.
>
>io conosco già l'indirizzo IP del server Mysql...
E quindi?
Te ne fai ben poco dell'IP senza driver ODBC e di una login con relativa password.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

allora... forse sono stato poco chiaro...

io ho due database... uno in remoto ed uno locale, che è la copia speculare del primo. Quello remoto è SQL, ed ho tutti i dati di login e quello locale è invece in Access.

La mia tabella è:

ID, Nome, Cognome, Matricola

Io devo aggiornare i due db, ma quello locale deve essere aggiornato solo dopo che è avvenuto il corretto aggiornamento del db remoto.

per farlo pensavo di usare la seguente struttura in entrambi i casa (ovviamente):

Dim nome as String

Dim num as Int64

sql = "UPDATE tabella SET Nome = ' " & nome& " ', Matricola = " num " WHERE ID =" & id

lbenaglia Profilo | Guru

>allora... forse sono stato poco chiaro...
>
>io ho due database... uno in remoto ed uno locale, che è la copia
>speculare del primo. Quello remoto è SQL, ed ho tutti i dati
>di login e quello locale è invece in Access.
>
>La mia tabella è:
>
>ID, Nome, Cognome, Matricola
>
>Io devo aggiornare i due db, ma quello locale deve essere aggiornato
>solo dopo che è avvenuto il corretto aggiornamento del db remoto.
>
>per farlo pensavo di usare la seguente struttura in entrambi
>i casa (ovviamente):
>
>Dim nome as String
>
>Dim num as Int64
>
>sql = "UPDATE tabella SET Nome = ' " & nome& " ', Matricola =
>" num " WHERE ID =" & id

Perdonami ma mancano un sacco di informazioni a contorno.

1) Il codice che hai postato cos'è? Fa parte di una tua applicazione client che deve aggiornare i due db?
2) Quelle due righe di codice sono incomplete oltre che errate (nome& si usava ai tempi del GW Basic per dichiarare variabili double e num non ha le "&" di concatenazione). Manca il codice di apertura delle 2 connessioni e quello relativo all'esecuzione del comando di UPDATE.
3) Infine non ci dici con che linguaggio stai sviluppando (anche se quell'Int64 mi sa tanto di Visual Basic .NET) e in quale punto del codice ricevi l'errore che hai menzionato nel primo post.

Sparando alla cieca ti suggerisco di leggere questo articolo di David:
http://www.dotnethell.it/articles/MySQL.aspx

Ora, se desideri ricevere un aiuto concreto, devi essere molto più preciso nel fornirci tutte le informazioni del caso.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie


>Ora, se desideri ricevere un aiuto concreto, devi essere molto più preciso nel fornirci tutte le informazioni del caso.

ok... intanto scusa per la troppa fretta ne postare il mio problema... non pensavo fosse necessario postare tutto il codice

1) Esatto la mia è una applicazione client

2) Il linguaggio è VB.NET (era specificato anche nel titolo)

3) Ho omesso le connessioni al DB (per ora mi connetto solo a quello Access) perchè sono corrette

Dim sql As String

Dim prog As Integer = System.Convert.ToInt64(TextBox1.Text)

sql = " update tabella set Nome = ' "& TextBox2.Text &" ', Matricola = " & System.Convert.ToInt64 (TextBox3.Text) & " where ID = " & prog

Dim cmd As New OleDbCommand(sql, Conn)

Dim dr As OleDbDataReader

cmd.ExecuteNonQuery()

dr.Close()

spero di non avere dimenticato niente

lbenaglia Profilo | Guru

>1) Esatto la mia è una applicazione client
OK

>2) Il linguaggio è VB.NET (era specificato anche nel titolo)
Vero, non lo avevo visto

>3) Ho omesso le connessioni al DB (per ora mi connetto solo a
>quello Access) perchè sono corrette
Va bene.

> Dim sql As String
>
>Dim prog As Integer = System.Convert.ToInt64(TextBox1.Text)
>
>sql = " update tabella set Nome = ' "& TextBox2.Text &" ', Matricola
>= " & System.Convert.ToInt64 (TextBox3.Text) & " where ID
>= " & prog

Allora qua c'è già qualcosa che non va.
Dim prog As Integer = System.Convert.ToInt64(TextBox1.Text)
Attento, se TextBox1.Text viene valorizzata con una stringa che non rappresenta un numero, quel cast ti scatenerà una eccezione. Ricordati di gestire le eccezioni con una Try...Catch.

...&" ', Matricola = " & System.Convert.ToInt64 (TextBox3.Text) & "
Stai costruendo una stringa contenente un comando di UPDATE. Per quale motivo casti il valore di TextBox3.Text a intero?! Ora, non ricordo se VB.NET rieffettuerà un cast implicito a stringa oppure scatenerà una eccezione, ma in ogni caso si tratta di un cast esplicito inutile.
Se il data type della colonna Matricola è numerico (ad esempio int) è sufficiente non racchiudere tra singoli apici il suo valore per valorizzarla.

> Dim dr As OleDbDataReader
>
> cmd.ExecuteNonQuery()
>
> dr.Close()
A che ti serve quel datareader? Il metodo ExecuteNonQuery della classe OleDbCommand esegue un comando SQL sulla connessione impostata nella proprietà Connection e restituisce il numero di righe modificate come valore di ritorno.
Probabilmente l'errore lo ricevi alla chiusura del data reader dato che la classe non è stata nemmeno istanziata.

>spero di non avere dimenticato niente
Lo spero anch'io

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

Grazie mille dell'aiuto....il problema era proprio quel Data Reader non istanziato...

Però rimane il problema di aggiornare la matricola...

quando metto un valore numerio il try mi da errore nell'esecuzione dell'UPDATE

lbenaglia Profilo | Guru

>Grazie mille dell'aiuto....il problema era proprio quel Data
>Reader non istanziato...
Fuori uno

>Però rimane il problema di aggiornare la matricola...
>
>quando metto un valore numerio il try mi da errore nell'esecuzione
>dell'UPDATE
Qua mancano informazioni, di cui le più importanti sono:

- Il comando SQL di UPDATE;
- Il codice e la descrizione dell''errore che ricevi;
- La riga che scatena l'eccezione.

Se vuoi fornirci queste informazioni, please...
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

sql = "UPDATE pratiche SET Nome = '" & TextBox6.Text & "', Cognome= '" & TextBox7.Text & "', Matricola= " & System.Convert.ToInt64(TextBox2.Text) & " WHERE ID = " & prog


l'errore che da è: Errore di Sintassi dell'Update

anche levando il casting esplicito non funziona....

lbenaglia Profilo | Guru

>sql = "UPDATE pratiche SET Nome = '" & TextBox6.Text & "', Cognome=
>'" & TextBox7.Text & "', Matricola= " & System.Convert.ToInt64(TextBox2.Text)
>& " WHERE ID = " & prog
>
>
>l'errore che da è: Errore di Sintassi dell'Update
Si, ma devi postarci il comando di UPDATE ovvero il contenuto della variabile sql!

>anche levando il casting esplicito non funziona....
Quel cast VA LEVATO
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

l'ho già levato, ma da sempre lo stesso errore adesso faccio:

... Matricola = " & TextBox2.Text & " .....

ma da sempre lo stesso errore.... il campo matricola è di tipo numerico

lbenaglia Profilo | Guru

>l'ho già levato, ma da sempre lo stesso errore adesso faccio:
>
>... Matricola = " & TextBox2.Text & " .....
>
>ma da sempre lo stesso errore

ROTFL... POSTA IL CONTENUTO DELLA VARIABILE SQL

> .... il campo matricola è di tipo numerico
Ho capito, mannaggia, ma tu STAI COMPONENDO UNA STRINGA quindi DEVI CONCATENARE STRINGHE!!!!!!
Il contenuto della variabile stringa sql, costituirà il comando di UPDATE che verrà eseguito sul DBMS.
Quando aggiorni una variabile numerica, il suo valore non deve essere racchiuso tra singoli apici (').

Supponiamo di avere questa tabella:

CREATE TABLE Students( StudentID int NOT NULL PRIMARY KEY, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL, Age int NOT NULL ); INSERT INTO Students VALUES(1, 'Lorenzo', 'Benaglia', 35); INSERT INTO Students VALUES(2, 'David', 'De Giacomi', 25);

Ora supponiamo di aver commesso un errore durante l'inserimento del cognome del primo studente e dell'età del secondo.
Nel primo caso dovrò aggiornare una colonna stringa varchar(10), nel secondo una colonna numerica int.
Vediamo quali comandi dovrò scrivere:

UPDATE Students SET LastName = 'Memoli' WHERE StudentID = 1; UPDATE Students SET Age = 46 WHERE StudentID = 2;

Vediamo il risultato:

SELECT * FROM Students; /* Output: StudentID FirstName LastName Age ----------- ---------- ---------- ----------- 1 Lorenzo Memoli 35 2 David De Giacomi 46 (2 row(s) affected) */


Ci siamo?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

ok...faccio tutto come fai tu.... ma mi da sempre errore.....

lbenaglia Profilo | Guru

>ok...faccio tutto come fai tu.... ma mi da sempre errore.....
E secondo te come faccio ad aiutarti se non rispondi alle mie domande?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

scusa, ma stasera sto sclerando co sta cosa...

allora... se io faccio

sql = "UPDATE tabella SET Password = 34 WHERE ID = 1"

mi continua a dare errore...

ps

scusa ancora se non sono stato chiaro...

lbenaglia Profilo | Guru

>scusa, ma stasera sto sclerando co sta cosa...
Me ne sto accorgendo

>allora... se io faccio
>
>sql = "UPDATE tabella SET Password = 34 WHERE ID = 1"
>
>mi continua a dare errore...

1) Qual è il data type della colonna Password?
Dubito che sia numerico....

2) Supponendo che abbia commesso un errore dimenticando gli apici intorno a 34, che la tabella si chiami con un nome reale e non semplicemente tabella, se modifichi opportunamente il comando e lo esegui in Access che succede? Funziona? Hai un errore? Se si quale?

Insomma, mi sembra eccessivo continuare a discutere su un banalissimo comando di UPDATE, fai F1 in Access e leggi per bene la sua sintassi.

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

noterror Profilo | Newbie

Certo....cmq grazie lo stesso per il tempo che hai perso dietro di me
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5