Redirect da form

mercoledì 13 febbraio 2008 - 16.34

shark72 Profilo | Newbie

Ciao a tutti, spero che almeno voi riusciate ad aiutarmi perché sono settimane che impazzisco dietro questo problema.
Devo creare una pagina (che magari per voi è elementare ma io, che sono alle prime armi, non riesco a venirne a capo) con 2 textbox e un pulsante.
In uno si scrive il nome del database e nell'altro il codice utente. In base a questi 2 dati si viene indirizzati nella pagina personale dell'utente. Mi spiego meglio:

Database aa1.mdb che ha una tabella che si chiama affiliati i cui ci sono i campi: Codice e Url, dove codice è il codice utente (username) e l'url è la sua pagina personale.

Questo è il codice:

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

Sub Page_Load (Obj As Object, E As EventArgs)
Dim indirizzo as string
if Not Page.IsPostBack then
indirizzo = String.Empty
End if
End sub

Sub Reindirizza(Obj As Object, E As EventArgs)
' L'utente inserisce i 2 codici richiesti
Dim Database As String = textbox1.text +".mdb"
Dim Nick As String = textbox2.text
'Determino il percorso del database e la stringa di connessione
Dim Percorso As String = "G:\sito itsworth\dati\" + Database
Dim ConnString As String = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" + Percorso

'Imposto la connessione
Dim Connessione As New OleDbConnection _
("Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=G:\sito itsworth\dati\aa1.mdb")

Connessione.Open()

' Mi serve solo l'URL relativo al nick inserito nel textbox2
Dim strSQL As String = "select Url From affiliati where Codice ='" + Nick + "'"
Dim Comando As New OleDbCommand(strSQL, Connessione)
Comando.Parameters.Add("Codice", OleDbType.WChar, 8)
Comando.Parameters(0).Value = "textbox2.text"
'Creo il DataReader, apro la connessione e lo "riempio"
Dim Reader As OleDbDataReader = Comando.ExecuteReader



'Se il nick c'è reindirizza, altrimenti visualizza un messaggio di errore
If Reader.Read Then
Dim indirizzo As String
indirizzo = strSQL
Response.Redirect(Indirizzo)
Else
Response.Write("Codice immesso errato, riprovare")
End If
Connessione.Close


End Sub

Esce sempre il messaggio di errore: Codice immesso errato, riprovare.

Cosa sbaglio?

Siete la mia ultima spiaggia....
Grazie

freeteo Profilo | Guru

ciao,
ci sono almeno un paio di errori di concetto

In ado.net, l'utilizzo dei parametri permette di evitare di fare formattazioni dei valori, evitare query soggette a SqlInjection, e una serie di altri motivi.
Ma le stringhe con i parametri devono essere fatte in questo modo, ed esempio una select:
"select...from...where campo=@nomeparametro"
a questo punto puoi aggiungere un parametro con il nome "@nomeparametro" ovviamente, e settare un valore.Il providera sapra' fare la query sql coretta per avere quello che ti serve.
Quindi nel tuo caso la riga:
>Dim strSQL As String = "select Url From affiliati where Codice
>='" + Nick + "'"
deve essere cambiata in:
"select Url From affiliati where Codice =@Codice"

poi aggiungi il parametro e va bene cosi'.

Altra cosa, ho visto questo:
> If Reader.Read Then
> Dim indirizzo As String
> indirizzo = strSQL
> Response.Redirect(Indirizzo)
> Else
indirizzo = strSQL ???????
probabilmente intendevi :
indirizzo = Reader.GetString(0)

prova a controllare questi passaggi intanto.

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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