6 messaggi dal 13 ottobre 2003
Ho un problema nell'inserimento di alcuni dati in un database. Tali dati vengono prelevati da un form. Non so perchè ma non funziona. Mi compare il messaggio di errore di connessione al database. Non so se questa possa essere la maniera più adatta per recuperari i dati dal form. Nel caso fosse errata come dovrei procedere? Ringrazio chiunque possa aiutarmi. Questo è il codice che utilizzo per l'inserimento:

<%@ Page Language="VB" %>

<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

dim Conn as new OleDbConnection("indirizzo del database")

sub Submit(obj as object,e as eventargs)

dim params(11) as string

'prelevo i campi del form
'tbName,tbSurname ecc. sono gli "id" delle textbox del form

params(0)=tbName.text
params(1)=tbSurname.text
params(2)=TbUser.text
params(3)=tbPsw.text
params(4)=tbPsw2.text
params(5)=tbemail.text
params(6)=tbAddress.text
params(7)=tbCity.text
params(8)=tbState.text
params(9)=tbCap.text
params(10)=tbphone.text

'query

dim strSQL as string = "INSERT INTO TblUsers(Nome, Cognome, Username, Password, ConfermaPSW, Email, Indirizzo, Città, Stato, CAP, Telefono) VALUES (" & _
"'" & params(0) & "'," & _
"'" & params(1) & "'," & _
"'" & params(2) & "'," & _
"'" & params(3) & "'," & _
"'" & params(4) & "'," & _
"'" & params(5) & "'," & _
"'" & params(6) & "'," & _
"'" & params(7) & "'," & _
"'" & params(8) & "'," & _
"'" & params(9) & "'," & _
"'" & params(10) & "')"

ExecuteStatement(strSQL)

end sub

function ExecuteStatement(strSQL)
dim objCmd as new OledbCommand(strSQL,Conn)

try
objCmd.Connection.Open()
objCmd.ExecuteNonQuery()
catch ex as Exception
lblmessage.text="Errore di connessione al database"
end try
end function


</script>
575 messaggi dal 06 settembre 2002
Contributi
dim strSQL as string = "INSERT INTO TblUsers(Nome, Cognome, Username, Password, ConfermaPSW, Email, Indirizzo, Città, Stato, CAP, Telefono) VALUES (?,?,?,?,?,?,?,?..)
dim Conn as new OleDbConnection("indirizzo del database")

dim Cmd as new OledbCommand(strSQL,Conn)

Cmd.Parameters.Add("@Nome", Data.OledbType.Char).Value=TetxtBox.Text.Replace("'","''")
Per ogni campo
Conn.Open
Cmd.executeNoQuery
Cmd.Dispose
Conn.close
6 messaggi dal 13 ottobre 2003
Ho seguito il consiglio ma continuo ad avere degli errori. Una cosa che non ho capito è la seguente riga di codice:

Cmd.Parameters.Add("@Nome", Data.OledbType.Char).Value=TetxtBox.Text.Replace("'","''")

Che devo inserire dopo Replace("",""")?

Poi che fa cmd.Dispose

Ho cercato anche un po' sui libri e ho trovato questa soluzione da utilizzare per ogni metodo:

dim objParam as OleDbParameter
objParam=objCmd.Parameters.Add("@Nome", OleDbType.Char)
objParam.Direction = ParameterDirection.Input
objParam.Value = tbName.text

molto simile a quella suggerita, ma ugualmente non va bene. Il resto del codice è corretto, quindi il problema è qui da qualche parte. Grazie ancora per l'aiuto.
575 messaggi dal 06 settembre 2002
Contributi
Mi dici cosa ti dice l'errore esattamente?
Prova a fare la open della connection senza eseguire il command per vedere se è proprio la connessione che non va.
Ciao
Modificato da dracula il 14 ottobre 2003 16.05 -
6 messaggi dal 13 ottobre 2003
Ho provato a modificare il codice:

dim Conn as new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=connessione al database")

sub Submit(obj as object,e as eventargs)

dim params(11) as string
dim objCmd as OledbCommand
dim strSQL as string

strSQL = "Insert into TblUsers(Nome, Cognome, Username, Password, ConfermaPSW, Email, Indirizzo, Città, Stato, CAP, Telefono) VALUES ('@Nome', '@Cognome', '@Username', '@Password', '@ConfermaPsw', '@Email', '@Indirizzo', '@Città', '@Stato', '@Cap', '@Telefono')"

objCmd = new OleDbCommand(strSQL,Conn)

objCmd.Parameters.Add("@Nome",tbName.Text)
objCmd.Parameters.Add("@Cognome",tbSurname.Text)
objCmd.Parameters.Add("@Username",tbUser.Text)
objCmd.Parameters.Add("@Password",tbPsw.Text)
objCmd.Parameters.Add("@ConfermaPsw",tbPsw2.Text)
objCmd.Parameters.Add("@Email",tbemail.Text)
objCmd.Parameters.Add("@Indirizzo",tbAddress.Text)
objCmd.Parameters.Add("@Città",tbCity.Text)
objCmd.Parameters.Add("@Stato",tbState.Text)
objCmd.Parameters.Add("@Cap",tbCap.Text)
objCmd.Parameters.Add("@Telefono",tbPhone.Text)

Conn.Open()
objCmd.ExecuteNonQuery()
Conn.Close()

end sub

Mi dice che c'è un errore nel comando Sql Insert Into.

575 messaggi dal 06 settembre 2002
Contributi
Prova a vedere quà http://support.microsoft.com/default.aspx?scid=kb;en-us;209187
, inoltre la cartella e il db anno i permessi dell'utente aspnet anche in scrittura?
ciao
6 messaggi dal 13 ottobre 2003
Ho guardato i permessi: vanno bene.
Per sicurezza ho provato anche a spostare il database ma continuo sempre a ricevere lo stesso errore. Questo è ciò che mi dice:

System.Data.OleDb.OleDbException: Errore di sintassi nell'istruzione INSERT INTO.

Ho riguardato l'istruzione sql ma per me va bene.

"INSERT INTO TblUsers (Nome, Cognome, Username, Password, ConfermaPSW, Email, Indirizzo, Città, Stato, CAP, Telefono) VALUES (@Name, @Surname, @Username, @Password, @ConfermaPsw, @Email, @Address, @City, @State, @Cap, @Phone)"

Cosa può essere?
Grazie ancora per l'aiuto e per la disponibilità.

ciao
575 messaggi dal 06 settembre 2002
Contributi
Devi usare i ? al Posto della @ questo è un errore. e non inserire il nome del campo Values (?,?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.