webForumDet fria alternativet

mer databas problem

17 svar · 435 visningar · startad av Jennie_Pennie

Jennie_PennieMedlem sedan apr. 200235 inlägg
#1

Kan någon snäll själv förklara varför det blir fel på det här:

________________________________________

<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>

<script language="VB" runat="server">
Sub Page_Load
Dim strConnection as String ="Provider=Microsoft.Jet.OLEDB.4.0;data source=C:\Inetpub\wwwroot\ASPNET\db2.mdb"
data_src.text = strConnection
Dim strSQL as string="SELECT anvnamn, password FROM user"
Dim strResultsHolder as string

Dim objConnection as New OledbConnection(strConnection)
Dim objCommand as New Oledbcommand(strSQL, objConnection)
Dim objDataReader as OledbDataReader

try
objConnection.Open()
con_open.text="Conncetion opened sucessfully.<br>"
objDataReader = objCommand.ExecuteReader()

Do While objDataReader.Read()=True
strResultsHolder +=objDataReader("anvnamn")
strResultsHolder +=" "
strResultsHolder +=objDataReader("password")
strResultsHolder +="<br>"
Loop

objDataReader.Close()
objConnection.Close()
con_close.text="Connection closed<br>"
divListEmployees.innerHTML = strResultsHolder
catch e as Exception
con_open.text="Connection failed to open.<br>"
con_close.text=e.ToString()
end try
end Sub
</script>
<html>
<body>
<h4>testing the data connection
<asp:label id="data_src" runat="server" /></h4>
<asp:label id="con_open" runat="server" /><br>
<div id="divListEmployees" runat="server"> list will go here</div>
<asp:label id="con_close" runat="server" /><br>
</body>
</html>

______________________________________________

felmeddelandet jag får upp är:

Syntax error in FROM clause.

och så pekar den på
objDataReader = objCommand.ExecuteReader()

Någon som vet?

NETworkMedlem sedan juni 20011 732 inlägg
#2

Jag har för mig att du inte får döpa ett fältnamn i Access till password, prova att döpa om det till något annat. Visst är det idiotiskt.

Jennie_PennieMedlem sedan apr. 200235 inlägg
#3

näe funka ändå inte... :(

peterbladhMedlem sedan juni 2000277 inlägg
#4

Kan tänkas att user heller inte är så populärt... test:

SELECT anvnamn, [password] FROM [user]

Jennie_PennieMedlem sedan apr. 200235 inlägg
#5

japp däri låg nog problemet... nu funkar det att läsa från databasen... tackar tackar... :)

Jennie_PennieMedlem sedan apr. 200235 inlägg
#6

Men nu tror jag att jag börjar grina... försöker jämföra värden i databasen med värden som jag skrivit in på sidan. Alltså jag ska kolla om användarnamnet finns i databasen och passwordet likaså... är det nån som vet nåt enkelt sätt att kolla sånt för snart ger jag upp!!! :(

NETworkMedlem sedan juni 20011 732 inlägg
#7

Ge upp kan du göra om 100 år.

Först hämtar du dina data (i ditt fall lösenordet och användarnamnet för den person som du ska jämföra med) från databasen, lägger dem i en eller flera variabler och jämför dem med det eller de värden besökaren skriver in i exempelvis en textbox.

Hur har du gjort?

Mika3lMedlem sedan nov. 20018 492 inlägg
#8

Du kan jag inte databashantering med ASP.NET, ännu, men så här kan du göra i ASP iallafall. :)

Set kolla = Connection.Execute("SELECT user FROM TABELL WHERE user = '" & Request.Form("user") & "'")
If kolla.EOF Then
'Användarnamnet är inte upptaget.
Else
'Användarnamnet är upptaget.
End If

Lite snabbt och simpelt men det är så man gör i ASP, försök att "konvertera" till ASP.NET. ;)

/Mika3l

NETworkMedlem sedan juni 20011 732 inlägg
#9

Aha, just det... jag läste inte frågan ordentligt. Ett sätt är att göra allt direkt i din sql-sats (fråga på sql-forumet, de har svar på alla frågor där inne). Eller om du vill göra det kodvägen (exempelvis om du behöver göra det pga annan funktionalitet) så är det bara att hämta namnet och lösenordet, om då din sql-sats inte returnerar någon träff så vet du att användaren inte finns.

Hur det ser ut i VB vågar jag inte hjälpa dig med, jag håller mig till c#. :) Någon annan kan säkert.

Mika3lMedlem sedan nov. 20018 492 inlägg
#10

Hade kunnat hjälpa dig med VB om jag inte hade fastnat p.g.a alla felmeddelanden. :p :l

NETworkMedlem sedan juni 20011 732 inlägg
#11

Hm, sitter här och funderar lite... det är nog inte helt lätt att göra det direkt med sql trots allt (även om det nog går!) ... möjligtvis om du använder stored procedures, vet dock inte hur bra det funkar i access.

Men skriv någonting så här kanske: "SELECT anv,pass FROM tabell WHERE anv=variabel1 AND pass=variabel2" ... får du ingen träff så är det grönt, annars inte. No problemas.

Varför göra det lätt för sig när det kan vara svårt? :h

Jennie_PennieMedlem sedan apr. 200235 inlägg
#12

som jag har skrivit nu så står det:

Do
if (Request.Form("username") = objDataReader("anvnamn")) then
if (Request.Form("password") = objDataReader("pword")) then
lblMessage.Text = "Inloggad och glad!"
else
lblMessage.Text = "Fel lösenord"
end if
else
lblMessage.Text = "Fel användarnamn!"
end if
Loop Until objDataReader.Read()=True

har hämtat koden från ett exempel i en bok, men det verkar inte funka så bra... är lite osäker om man kan skriva så där oxå med Do... Until. Men jag måste ju gå igenom databasen på nåt vänster... I vanliga ASP är det ju hur lätt som helst... ska ASP.NET inte vara smidigare än ASP???? :(

NETworkMedlem sedan juni 20011 732 inlägg
#13

Det är lättare i asp.net än i gamla asp, inte minst är det mer LOGISKT och du slipper den klassiska ASP-röran med kod och html och skit blandat överallt (om du nu inte programmerar betydligt krångligare COM).

Du behöver inte loopa och hålla på. Ställ frågan till databasen som jag skrev ovan. Om du bara ska ha två alternativ (inloggad/inte inloggad) så är det ju bara att göra en if-sats som säger att om antalet träffar är > 0 så loggas du in, annars inte.

Jennie_PennieMedlem sedan apr. 200235 inlägg
#14

kämpar vidare... har gjort en sql fråga och en if sats som du, NETwork sa tidigare... men nu får jag någe fel igen... Förstår ju vad du menar med att om träffen är över noll så är man inloggad men jag förstår inte hur jag ska jämföra det... Är det själva sql satsen eller vad? Jag börjar allvarligt talat tvivla om jag nånsin kommer fatta denna idioti... :(

Jennie_PennieMedlem sedan apr. 200235 inlägg
#15

Nämen nu du! NU tror jag att jag fått till det... men det funkar ju ändå inte riktigt som jag vill... iom ditt (NETwork) förslag om att jag skulle ta sql satsen och kolla om den fick träff eller inte så kan det bli sant fast jag skriver fel lösenord... nåt förslag på lösning? ska fila lite mer på det här... får se vad jag kommer fram till... :)

Jennie_PennieMedlem sedan apr. 200235 inlägg
#16

JAAAAAAAAA nu funkar det precis som jag vill!!!! Löste det med hjälp av en Do While sats.... så nu är jag nöjd och belåten! Tack allihopa för hjälpen!!! :f

NETworkMedlem sedan juni 20011 732 inlägg
#17

Jadu Jennie-Pennie... :)

Nu kan jag ju inte vb men du kanske kan klura ut något från lite c#-kod:

//Först ställer du sql-frågan
SELECT anvnamn,passord FROM tabell WHERE anvnamn = '"+TextBox1.Text+"' 
AND passord =  '"+TextBox2.Text+"'"

//Sen instansierar du en datatable:
DataTable dt = new DataTable();

//...och fyller den med de data som du nyss 
hämtade från din databas: 

myDA.Fill (dt, "myTable");

//Nu har du en datatable som innehåller alla data som du
hämtade med din sql-fråga, dvs antingen inga data alls eller en
rad (row) med besökarens användarnamn och lösenord om
han/hon redan fanns i databasen.

//Allt du behöver göra nu är att räkna antalet rader i din
datatable och använda svaret i en ifsats - innehåller din
datatable 0 rader så fanns inte användaren i databasen.

if (dt.Rows.Count > 0) {kod}
else {kod}
Jennie_PennieMedlem sedan apr. 200235 inlägg
#18

Tack NETwork!! men om du läser på meddelandet innan (1 min innan du skickade ditt) så har jag redan löst det! Tjoho vad kul!!!! :bire

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)