Avatar billede nidyahou Praktikant
24. januar 2006 - 09:17 Der er 24 kommentarer og
1 løsning

problemer med at forbinde til MySQL

hej. Jeg har en ODBC 3.51 Driver til MySQL. Jeg har installeret den i ODBC panelet i control panel. Jeg har sat maindb som database, men alligevel får jeg følgende fejl:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC driver does not support the requested properties.
/Bu Roskilde Rockers/Database/Connect.asp, line 4

(Line 4 er naturligvis forbindelsesoprettelsen)

Når jeg bruger denne kode:
Set rs = Server.CreateObject("ADODB.RecordSet")
strDSN = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=maindb;USER=Jakob;PASSWORD=XXX;OPTION=3;"
rs.Open strSQL, strDSN, 3
Avatar billede nielle Nybegynder
24. januar 2006 - 09:27 #1
Prøv at fjerne ",3"
Avatar billede nidyahou Praktikant
24. januar 2006 - 09:33 #2
samme fejl
Avatar billede nidyahou Praktikant
24. januar 2006 - 09:34 #3
jeg har set andre der har både en ADODB.Connection og -||-.RecordSet har det noget med det at gøre?
Avatar billede fennec Nybegynder
24. januar 2006 - 09:40 #4
Prøv med dette for at finde ud af om det er forbindelsen der er problemet:

strDSN = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=maindb;USER=Jakob;PASSWORD=XXX;OPTION=3;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDSN
set rs = conn.execute(strSQL)
Avatar billede nielle Nybegynder
24. januar 2006 - 09:40 #5
Du skal have lavet en ADODB.Connection før at du kan lave noget som helst database-relateret. Det er derimod ikke altid nødvendigt med en ADODB.RecordSet - det afhænger udelukkende af hvordan du ønsker at arbejde med dine recordset's.
Avatar billede nidyahou Praktikant
24. januar 2006 - 15:06 #6
nu ser den databasen men der er fejl i SQL må man i MySQL ikke frame sine kolonner i [table] ?
Avatar billede fennec Nybegynder
24. januar 2006 - 15:13 #7
MySQL bruger ´
Avatar billede nidyahou Praktikant
24. januar 2006 - 15:42 #8
jaja men hvis der er nogele felter eller koder der er reserverede som f.x. "Date" så kan man undgå komplikationer ved at sige [Date] skal man så skrive 'Date' ?
Avatar billede fennec Nybegynder
24. januar 2006 - 15:58 #9
Ikke ' men ´ (knappen til venstre for backslash også tryk space)

"select navn,´date´ from enTabel"
Avatar billede fennec Nybegynder
24. januar 2006 - 16:00 #10
ikke backslash men backspace eller "Slet tilbage" om man vil :o)
Avatar billede nidyahou Praktikant
24. januar 2006 - 16:12 #11
hvad duer ikke ved følgende:

strSQL = "SELECT * FROM Nyheder Order by ´Date´ Desc"
Avatar billede nielle Nybegynder
24. januar 2006 - 16:33 #12
strSQL = "SELECT * FROM Nyheder Order by `Date` Desc"

`-tegnet hedder en backtick.
Avatar billede fennec Nybegynder
24. januar 2006 - 16:47 #13
Selvfølgelig er det ` i stedet for ´.
Får altid byttet om på dem, og jeg undskylder fejloplysningen :(
Avatar billede nidyahou Praktikant
24. januar 2006 - 16:53 #14
yet another problem... Jeg får fejl når jeg siger rs.Absolutepage... Hvordan kan man så lave pagning med MySQL ? Det er mit recordset jeg bruger, hvorfor vil det ikke fungere?
Avatar billede nidyahou Praktikant
24. januar 2006 - 16:57 #15
godt ord igen > fejlen opstår jo fordi jeg ikke bruger recordsæt :P Derfor jeg ville have flettet den ind :P
Avatar billede fennec Nybegynder
24. januar 2006 - 17:00 #16
Paging laves med LIMIT funktionen.

select * from DinTabel where .. Limit 10 (første 10 resultater)
select * from DinTabel where .. Limit 20,10 (fra 20 og 10 sider frem)
Avatar billede nidyahou Praktikant
24. januar 2006 - 17:02 #17
huh... der må jeg vist have et eksempel - hvorfor kan jeg ikke bare få mit recordsæt tilsluttet forbindelses strengen også?
Avatar billede fennec Nybegynder
24. januar 2006 - 17:08 #18
Fordi MySQL ikke understøtter den funktionalitet :(

Du kan finde et paging eks her:
http://activedeveloper.dk/artikler/default.asp?articleid=279
Avatar billede nidyahou Praktikant
24. januar 2006 - 17:26 #19
dvs. jeg kan ikke have én fil der hedder connection, men jeg skal bruge plads på hver side til at lave en forbindelse?
Avatar billede fennec Nybegynder
24. januar 2006 - 17:48 #20
Du kan godt genbruge connectionen, så du kan stadig have det liggende i en fil.

Dette skal ligge i en fil:
strDSN = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=maindb;USER=Jakob;PASSWORD=XXX;OPTION=3;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDSN

Den fil inkluderes så på de andre sider, hvor du så kan lave alle de "set rsX" du vil:

set rs1 = conn.execute("select * from ...")
set rs2 = conn.execute("select * from ...")

Du kan selvfølgelig også genbruge rsX når du er færdig med dem:
set rs1 = conn.execute("select * from Tabel1...")
while not rs1.eof
...
wend
set rs1 = conn.execute("select * from Tabel2...")
while not rs1.eof
...
wend
Avatar billede nidyahou Praktikant
24. januar 2006 - 17:59 #21
arh MySQL er da rocker besværligt så :P Er det virkelig så elendigt at jeg ikke kan lave en paging der er bedre, og sørge for at min kode bliver bare nogenlunde overskuelig?
Avatar billede fennec Nybegynder
24. januar 2006 - 18:14 #22
Personlig synes jeg ikke der er den store forskeld på de to databaser. Til almindelig kørsel er koden næsten ens. Det er kun sql-sætningerne der variere lidt, og det er ikke særlig ofte.

Angående paging kan nogen bedst lide MySQL's metoden men andre foretrækker Access og MS-SQL metoden. Jeg kan personlig bedst lide MySQL metoden, men nok fordi jeg ikke kan lide rs.open og de muligheder den giver (f.eks rs.update, rs.delete og hele paging metoden). Det vil jeg hellere gøre gennem "rigtige" sql-sætninger.

.o) <-- One Eyed Jack
Avatar billede nidyahou Praktikant
24. januar 2006 - 18:15 #23
desuden hvis jeg har den kode så skal jeg jo have ppaging på alle sider
Avatar billede nidyahou Praktikant
24. januar 2006 - 18:49 #24
mit primære spørgsmål er jo besvaret - tak for hjælp =)
Avatar billede fennec Nybegynder
25. januar 2006 - 09:26 #25
Næh nej. Det er skam ikke kun til paging den forbindelse kan bruges. Jeg har f.eks lavet det sådan her:

(connection.asp)
dim conn
const strDSN = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=maindb;USER=Jakob;PASSWORD=XXX;OPTION=3;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDSN

(end.asp)
conn.close
set conn = nothing

Connection og end filerne bliver includeret på alle mine sider (i start og til slut). På den måde har jeg EN database connection, og ud fra den kan jeg gøre alt det jeg vil med databasen (hente, updatere, slette). Det er kun en database forbindelse, hvordan den bruges er helt op til dig selv. Den kan endag bruges sammen med et ADODB.RecordSet, selv om MySQL ikke er så glad for den type forbindelse (men det kunne jo være du havde en Access/MS-SQL forbindelse et andet sted).

set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open SQLStr, Conn, 1
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester