Update con parametri: Istruzione Sql non Valida

martedì 29 giugno 2010 - 15.29

dyd666 Profilo | Junior Member

Salve

Ho questa query:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Utilizzata in questo codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Non so che fare , a me sembra tutto corretto...

TOPOAMORE Profilo | Expert

>Salve

ciao

>
>Ho questa query:
>
>
>PARAMETERS pass Text ( 255 ), nom Text ( 255 ), cognom Text (
>255 ), prov Text ( 255 ), tel Text ( 255 ), citt Text ( 255 ),
>dat DateTime, via Text ( 255 ), user Text ( 255 );
>UPDATE Utenti SET Password = [pass], Nome = [nom], Cognome =
>[cognom] , Provincia = [prov] , Telefono = [tel] , Citta = [citt],
>Data = [dat] ,Via = [via], Username = [user]
>WHERE Utenti.Username = [user];

prova ad anteporre @ ad ogni parametro sia in dichiarazione che in immissione solo nell'sql

>
>
>Utilizzata in questo codice:
>OleDbConnection cn1 = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
>SOURCE=" + Server.MapPath("Lam - Copia.mdb") + ";");
>OleDbCommand cmd2 = new OleDbCommand("ModProf", cn);
>
> /* Definisco il Command Type */
>cmd.CommandType = System.Data.CommandType.StoredProcedure;
>
> /* Definisco i parametri di input */
>cmd2.Parameters.Add("user", OleDbType.VarChar).Value = Convert.ToString(Session["Username"]);
>cmd2.Parameters.Add("pass", OleDbType.VarChar).Value = RipPassword.Text;
>//cmd2.Parameters.Add("mail", OleDbType.VarChar).Value = Email.Text;
>cmd2.Parameters.Add("nom", OleDbType.VarChar).Value = Nome.Text;
>cmd2.Parameters.Add("cognom", OleDbType.VarChar).Value = Cognome.Text;
>cmd2.Parameters.Add("dat", OleDbType.VarChar).Value = ddG.SelectedValue
>+ "/" + ddM.SelectedValue + "/" + ddA.SelectedValue;
>cmd2.Parameters.Add("tel", OleDbType.VarChar).Value = Tel.Text;
>cmd2.Parameters.Add("citt", OleDbType.VarChar).Value = Citta.Text;
>cmd2.Parameters.Add("prov", OleDbType.VarChar).Value = ddP.SelectedValue;
>cmd2.Parameters.Add("via", OleDbType.VarChar).Value = Via.Text;
>
>
> /* Apro la connessione ed eseguo la query */
> cmd2.Connection.Open();
> result = (int)cmd2.ExecuteScalar();
>
> /* Pulizia */
> cn1.Close();
>
>
>Non so che fare , a me sembra tutto corretto...
Inoltre di che db parliamo???
__.__.__.__.__.__

ASP 2.0 - VB 2008

dyd666 Profilo | Junior Member

Lasciamo perdere per un secondo la query parametrata , visto che il problema in questione mi vien fuori anche in una normalissima query:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questo il codice

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

TOPOAMORE Profilo | Expert

>Lasciamo perdere per un secondo la query parametrata , visto
>che il problema in questione mi vien fuori anche in una normalissima
>query:
>
>strSQL = "UPDATE Utenti SET Username = '" + appo + "' , Password
>= '" + RipPassword.Text + "' , Nome = '" + Nome.Text + "', Cognome
>= '" + Cognome.Text+ "', Telefono = '" +Tel.Text+ "' , Via =
>'" +Via.Text+ "', Citta = '" +Citta.Text+ "', Data = '"+ ddM.SelectedValue+"/"+
>ddG.SelectedValue+"/"+ ddA.SelectedValue+"', Provincia = '" +ddP.SelectedValue+"'
>Where Username = '" +appo+ "'";
>
>Questo il codice
>
>
>string appo = Convert.ToString(Session["Username"]);
>strConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + Server.MapPath("Lam
>- Copia.mdb") + ";";
> Conn = new OleDbConnection(strConn);
> Conn.Open();
>strSQL = "UPDATE Utenti SET Username = '" + appo + "' , Password
>= '" + RipPassword.Text + "' , Nome = '" + Nome.Text + "', Cognome
>= '" + Cognome.Text+ "', Telefono = '" +Tel.Text+ "' , Via =
>'" +Via.Text+ "', Citta = '" +Citta.Text+ "', Data = '"+ ddM.SelectedValue+"/"+
>ddG.SelectedValue+"/"+ ddA.SelectedValue+"', Provincia = '" +ddP.SelectedValue+"'
>Where Username = '" +appo+ "'";
> Cmd = new OleDbCommand(strSQL, Conn);
> Cmd.ExecuteNonQuery();
> Conn.Close();

Modifica slq senza gli apici di apertura e chiusura elementi cioe:
strSQL = "UPDATE Utenti SET Username = " + appo + " , Password = " + RipPassword.Text + " , Nome = " + Nome.Text + "

ecc.....
__.__.__.__.__.__

ASP 2.0 - VB 2008

dyd666 Profilo | Junior Member

Nulla , Errore di sintassi ancora.
Non capisco davvero , il codice è secondo lo standard...

TOPOAMORE Profilo | Expert

scusa di che db parliamo????
__.__.__.__.__.__

ASP 2.0 - VB 2008

dyd666 Profilo | Junior Member

EDIT!!!

Pardon , ecco qui

http://img180.imageshack.us/i/qwed.png/

Nome: Utenti


EDIT!!!

TOPOAMORE Profilo | Expert

>EDIT!!!
>
>Pardon , ecco qui
>
>http://img180.imageshack.us/i/qwed.png/
>
>Nome: Utenti
>
>
>EDIT!!!

Allora prova a creare una query parametrica da access e vediamo di richiamarla da codice...

se ti serve una mano vai tranquillo

__.__.__.__.__.__

ASP 2.0 - VB 2008
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5