Avatar billede pissed_squirrel Nybegynder
09. april 2003 - 19:42 Der er 47 kommentarer og
1 løsning

Tjekke for opdatering på MySQL server på internettet - Hvordan ??

Jeg har rodet lidt med at få mit program til at connecte til en MySQL server på internettet, men jeg kan ikke lige se hvordan skal gøres....

Det skulle gerne være sådan at man kan højreklikke på programmet i taskbar og så få en mulighed for at tjekke for opdatering....

Hvorledes er dette muligt....???

Jeg er kommet frem til at jeg er nød til at have nogle ODBC drivere fra MySQL installeret, hvilket jeg så har gjort, mere kunne jeg ikke lige gennemskue fra de andre spørgsmål her på eksperten

Nogle der vil hjælpe ??
Avatar billede mortrr Praktikant
09. april 2003 - 20:49 #1
Hvis du finder noget asp-vbscript til at connecte til en mySQL server, skal du nærmest bare udskifte Server.CreateObject med CreateObject.
Avatar billede mortrr Praktikant
09. april 2003 - 20:50 #2
Eller det er måske selve connection strengen du er i tvivl om?
http://www.connectionstrings.com
Avatar billede pissed_squirrel Nybegynder
09. april 2003 - 20:56 #3
Faktisk det hele....hvilken kode skal jeg sætte ind for at connecte til databasen og hvilken kode skal jeg sætte ind for at hive data ud af databasen ?
Avatar billede pissed_squirrel Nybegynder
09. april 2003 - 21:00 #4
Det lader til at jeg skal bruge denne kode:

"Driver={mySQL};Server=data.domain.com;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;"

Men hvor henne ??

Og hvad er så koden til at hive data ud af databasen ?
Avatar billede mortrr Praktikant
09. april 2003 - 21:06 #5
Hurtigt eksempel, på min egen foretrukne metode.
Du skal bruge en reference til Microsoft ActiveX Data Objects 2.x library.

Dim objConn As ADODB.Connection
Dim objCommand As ADODB.Command
Dim objRecordset As ADODB.Recordset
 
Set objConn = New ADODB.Connection
Set objCommand = New ADODB.Command
Set objRecordset = New ADODB.Recordset

objConn.ConnectionString = "Driver={mySQL};Server=data.domain.com;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;"

objConn.Open
objCommand.ActiveConnection = myConnection
objCommand.CommandText = "Select * from Tabellen"
objRecordset.Open objCommand
Avatar billede mortrr Praktikant
09. april 2003 - 21:08 #6
Herefter kan du gennemløbe recordset med fx:

do while not objRecordset.EOF
  msgbox objRecordset.Fields("Feltnavn").Value
  objRecordset.MoveNext
loop
objRecordset.Close
Avatar billede pissed_squirrel Nybegynder
09. april 2003 - 22:08 #7
Hvor kan jeg finde denne reference til Microsoft ActiveX Data Objects 2.x library ???

Jeg har kigget under Components, men syntes ikke at kunne finde noget med Microsoft ActiveX Data, kun ActiveX

Er jeg helt galt på den ??
Avatar billede mortrr Praktikant
10. april 2003 - 06:07 #8
Lidt.
Project - References.
Avatar billede pissed_squirrel Nybegynder
10. april 2003 - 17:22 #9
Hvilken en skal jeg vælge ??

Der er jo flere forskellige !

Microsoft ActiveX Data Objects 2.0 - 2.7

Så er der oxo en der er multi-dimentional
Avatar billede mortrr Praktikant
10. april 2003 - 17:30 #10
Det er lidt underordnet, da de peger på den samme dll.
2.7

Hvis det skal være helt rigtigt bør man selv oprette de rigtige objekter, men det gør det lidt sværere at skrive koden, da du så ikke kan bruge code-completion.

Så, hvis man vil gøre det så versions-uafhængigt som muligt, bør man til sidst udskifte
Dim objConn As ADODB.Connection
Dim objCommand As ADODB.Command
Dim objRecordset As ADODB.Recordset
 
Set objConn = New ADODB.Connection
Set objCommand = New ADODB.Command
Set objRecordset = New ADODB.Recordset

med

Dim objConn As Variant
Dim objCommand As Variant
Dim objRecordset As Variant
 
Set objConn = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
Set objRecordset = CreateObject("ADODB.Recordset")
Avatar billede pissed_squirrel Nybegynder
10. april 2003 - 20:29 #11
Jeg får en fejl når jeg prøver at bruge den kode du gav mig

Run-Time Error '-2147467259(80004005)'
[Microsoft][ODBC Driver Manager] Datakildenavnet blev ikke fundet,
og der er ikke angivet en standarddriver.


Hvor skal jeg angive den driver ??

Har sat den til 2.7 under ref.
Avatar billede mortrr Praktikant
10. april 2003 - 21:58 #12
Pinligt.
Ret lige til:
objCommand.ActiveConnection = objConn
Avatar billede pissed_squirrel Nybegynder
10. april 2003 - 23:51 #13
Jeg får en fejl ved:

objConn.Open

Er det
objCommand.ActiveConnection = myConnection
jeg skal rette til
objCommand.ActiveConnection = objConn

???
Avatar billede mortrr Praktikant
11. april 2003 - 10:42 #14
Ja.

Får du den allerede ved open? Så er det en af dine options i connectionstrengen der ikke er rigtig, eller mysql odbc-driveren der ikke er installeret.
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 15:37 #15
jeg har installeret MyODBC-3.51.06

Hvad kan der ellers være galt, og hvordan kan jeg rette det ??
Avatar billede mortrr Praktikant
11. april 2003 - 16:17 #16
Du har en fejl i connectionstrengen.
Eller får ikke sat den inden du kalder objConn.Open
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 16:27 #17
objConn.ConnectionString = "Driver={mySQL};Server=mysql01.cliche.dk;Port=3306;Option=131072;Stmt=;Database=sewers_dk;Uid=xxxxxx;Pwd=xxxxx;"

Hvad kan jeg have gjort galt i den ??

Er det ikke sådan den skal bruges ??
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 16:29 #18
Kan man godt putte hele koden ind i en knap, så den kun kalder op, hvis man trykker på knappen, for det er nemlig det jeg har prøvet...

Har du også koden så man kan connecte til localhost ??
Avatar billede mortrr Praktikant
11. april 2003 - 16:34 #19
Jow - det er den rigtige.

Jeg lavede en hurtig test med:
Dim objConn As ADODB.Connection
Dim objCommand As ADODB.Command
Dim objRecordset As ADODB.Recordset

Set objConn = New ADODB.Connection
Set objCommand = New ADODB.Command
Set objRecordset = New ADODB.Recordset

objConn.ConnectionString = "Driver={mySQL};Server=mysql01.cliche.dk;Port=3306;Option=131072;Stmt=;Database=sewers_dk;Uid=xxxxxx;Pwd=xxxxx;"
objConn.Open

Det virker, meen - du få ikke lov til at connecte til den server fra andre steder end hos cliche.

Hvis du vil connecte til localhost, udskifter du bare server-navnet med localhost
objConn.ConnectionString = "Driver={mySQL};Server=localhost;Port=3306;Option=131072;Stmt=;Database=sewers_dk;Uid=xxxxxx;Pwd=xxxxx;"

Og jo - du kan godt lægge det hele i koden til en knap.
Det er lidt det samme der sker hvis man har det i en asp-fil. Den åbner og lukker jo også ved hvert gennemløb.
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 16:42 #20
Hvordan kan man så connecte til cliche.dk og checke noget i MySQL ??
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 16:51 #21
Den markere stadig ObjConn.Open hvis jeg trykker debug efter den er kommet med fejlen

Også selv om jeg har skiftet til localhost
Avatar billede mortrr Praktikant
11. april 2003 - 16:52 #22
Det kan du ikke. Jeg tvivler på at de vil lukke op for det.

Hvis det er rimeligt enkelt, hvor du vil bare vil hente noget data, og vise i vb, kan du lave en asp-fil (eller lignende) på dit webhotel hos cliche, der bare indeholder det du skal bruge fra databasen, uden html-tags og lign men med koder du selv opfinder til at opdele data eller evt xml, og så hente den.

På samme måde kan man (med lidt mere kodning) poste til en asp-fil på web-serveren.
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 17:00 #23
Jeg er ikke inde i ASP, men der imod PHP....:D

Ok....det lader til at jeg skal bruge lidt fantasi til at kunne connecte til cliche.dk

Hvad skal jeg så gøre for bare at få det til at virke på min egen maskine (localhost) ???

Den brokker sig stadig over den der standarddriver der ikke er installeret....

Er det en forkert version af den der MyODBC jeg har installeret ?? (MyODBC-3.51.06)
Avatar billede mortrr Praktikant
11. april 2003 - 17:04 #24
Det er godt nok en lidt anden version af MyODBC jeg har (lidt ældre), men jeg tvivler på at den nyere ikke skulle virke.

Kan du vælge mysql hvis du laver en ny DSN i ODBC-manager?
Administrative Tools - Data Sources (ODBC)

Hvis ikke, så prøv at installere den igen.
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 17:33 #25
Under Bruger-DSN har jeg myodbc3-test, hvad skal jeg så gøre ??

Jeg er MEGET newb til dette her :D
Avatar billede mortrr Praktikant
11. april 2003 - 17:37 #26
Kig under drivere.
Er der en mysql her?

Hvis ja, så prøv at oprette en system-dsn, som bruger mysql-driveren, med localhost og dit brugernavn/password.
Skift din connection-streng ud med navnet på den dsn du har oprettet, og prøv at køre igen programmet igen.
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 18:10 #27
Det virker hvis jeg ændre:

"Driver={mySQL};Server=localhost;Port=3306;Option=131072;Stmt=;Database=sewers_dk;Uid=xxxxxx;Pwd=xxxxx;"

Til:

"Driver={MySQL ODBC 3.51 Driver};Server=localhost;Port=3306;Option=131072;Stmt=;Database=sewers_dk;Uid=xxxxxx;Pwd=xxxxx;"
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 18:13 #28
Hvordan er det muligt at få programmet til automatisk at vælge den højeste værdi når den laver den der loop som du har skrevet ??

den værdi den henter og skal tage max af, har formatet 1.0.0

Dine point er på vej.....:D
Avatar billede mortrr Praktikant
11. april 2003 - 18:18 #29
Så må jeg jo hellere komme med et svar ;-)

For at udvælge den højeste værdi, skal du bruge lidt sql.
objCommand.CommandText = "Select max(feltet) as MaxValue from Tabellen"
objRecordset.Open objCommand
if not objRecordset.EOF
  msgbox objRecordset.Fields("MaxValue").Value
end if
objRecordset.Close
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 18:27 #30
Det skal faktisk kædes sammen med noget VB, hvor den tjekker om der er kommet en ny version af programmet....

kan det gøres ved nogle if sætninger inde i
if not objRecordset.EOF
  msgbox objRecordset.Fields("MaxValue").Value
end if

??
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 18:35 #31
Den kan ikke lide denne linje:

if not objRecordset.EOF
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 18:35 #32
manglede bare en Then efter linjen


hehe
Avatar billede mortrr Praktikant
11. april 2003 - 18:36 #33
Ja.
.Value på et felt er værdien i feltet, i den type som feltet har.
Så læg den over i en streng.
if not objRecordset.EOF
  Seneste=objRecordset.Fields("MaxValue").Value
  if Seneste>DenneVersion then
    msgbox "Der er kommet en ny"
  end if
end if


Men men... Formatet på dit versions-nummer vil give lidt problemer. (lagde ikke lige mærke til det)

1.9.0 er fx større end 1.10.0
Så enten skal du holde dig under version 9, eller finde på en anden måde at gemme versionsnummeret.
Den helt nemme er at sætte 0'er ind så der altid er samme antal cifre.
Altså 1.09.0. Og eventuelt et mellemrum foran 1, hvis du forventer at komme op på version 10.0.0

Man kunne også gemme tallene i separate felter, og hente den højeste.
select top 1 VersionMajor, VersionMinor, VersionMinor2 FROM Tabellen ORDER BY VersionMajor DESC, VersionMinor DESC, VersionMinor2 DESC

Top 1 betyder at den kun henter første record fra tabellen. DESC betyder at der sorteres i faldende orden.
Avatar billede pissed_squirrel Nybegynder
11. april 2003 - 20:04 #34
hvis man nu siger at seneste skal være integer, vil det så ikke virker, med 1.0.9 som værende mindre end 1.0.10 ??
Avatar billede mortrr Praktikant
12. april 2003 - 14:11 #35
Nej, for en integer kan jo kun indeholde ét tal.
Så skal du til at parse indholdet af versionsnummeret.
Det er altså nemmere at bruge 1.0.09 eller at bruge tre separate tal.
Så kan man jo altid lave en beregning, så man ud af de tre tal lavet ét tal.
(VersionMajor*10000)+(VersionMinor*100)+VersionMinor2

og dermed
select max((VersionMajor*10000)+(VersionMinor*100)+VersionMinor2) As SidsteVersion FROM Tabellen
Avatar billede pissed_squirrel Nybegynder
14. april 2003 - 22:36 #36
Hvis man så skal gøre det med ASP, hvordan kan koden så evt. se ud...??
Avatar billede mortrr Praktikant
15. april 2003 - 08:08 #37
Hvilken del af det?

Hvis det er for at oprette objekter og åbne connection, så:

Set objConn = Server.CreateObject("ADODB.Connection")
Set objCommand = Server.CreateObject("ADODB.Command")
Set objRecordset = Server.CreateObject("ADODB.Recordset")

objConn.ConnectionString = "Driver={mySQL};Server=localhost;Port=3306;Option=131072;Stmt=;Database=sewers_dk;Uid=xxxxxx;Pwd=xxxxx;"
objConn.Open

Ellers er det nøjagtigt det samme. Der er ikke den store forskel fra vb til vbscript
Avatar billede pissed_squirrel Nybegynder
15. april 2003 - 09:45 #38
Ok, kunne være jeg skulle åbne et nyt spørgsmål, så du også kunne få point for det ??

Du skrev lidt oppe, at hvis jeg ville "ind" på en Cliche.dk's MySQL server, så skulle jeg hive den info ud, som jeg ville have, med noget ASP, og der efter få programmet til at tjekke siden, eller sådan noget

Og så er det jeg spørger dig....hvordan skal jeg så klare dette, da det ikke virker med at connecte til Cliche.dk uden at programmet ligger på deres server ??
Avatar billede mortrr Praktikant
15. april 2003 - 09:56 #39
Mja - vi er måske ved at vandre lidt væk fra det oprindelige emne.
Men det handler trods alt stadig om at få kontakt med den server.

Du kan bruge fx MSxml til at hente indholdet af en webside fra et eller andet site. (eller en browser-control)

dim xmlhttp as new msxml2.xmlhttp40
xmlhttp.Open "GET" "http://www.domain.dk/version.asp", False
xmlhttp.Send
VersionsInfo=xmlhttp.responseText

VersionsInfo vil nu indeholde den tekst som version.asp skriver "i browseren".

Så skal version.asp bare forespørge sql-serveren hvilken version der er den aktuelle.
Avatar billede pissed_squirrel Nybegynder
15. april 2003 - 16:15 #40
Dvs, med den kode du har skrevet her, så kan jeg også bruge PHP til at forespørge med ??

dim xmlhttp as new msxml2.xmlhttp40
xmlhttp.Open "GET" "http://www.domain.dk/check:version.php", False
xmlhttp.Send
VersionsInfo=xmlhttp.responseText


Er det muligt ??
Avatar billede pissed_squirrel Nybegynder
15. april 2003 - 16:16 #41
det skulle c-føllig være check_version.php og ikke check:version.php ;D
Avatar billede pissed_squirrel Nybegynder
15. april 2003 - 16:22 #42
Den kommer med en fejl ved:

xmlhttp.Open "GET" "http://www.domain.dk/check_version.php", False

Expected: end of statement

Har du nogen ide om hvad problemet kan være ??
Avatar billede pissed_squirrel Nybegynder
15. april 2003 - 16:24 #43
Den kommer med en fejl ved compile ved:

Dim xmlhttp As New msxml2.xmlhttp40

User-defined type not defined
Avatar billede pissed_squirrel Nybegynder
15. april 2003 - 16:25 #44
Mht. den anden fejl i:

xmlhttp.Open "GET" "http://www.domain.dk/check_version.php", False

Så brokkede den sig ikke mere, hvis jeg ændrede den til dette:

xmlhttp.Open "GET", "http://www.domain.dk/check_version.php", False

Er dette forkert ??
Avatar billede mortrr Praktikant
15. april 2003 - 19:45 #45
Der skal selvfølgelig være kommaer i Open. Det er mig der har været lidt for hurtig. Og den Dim er da også noget vrøvl.
dim xmlhttp as msxml2.xmlhttp40
Set xmlhttp=new msxml2.xmlhttp40
xmlhttp.Open "GET", "http://www.domain.dk/version.asp", False
xmlhttp.Send
VersionsInfo=xmlhttp.responseText

Du skal tilføje en reference til Microsoft XML 4.

MEN for at gøre den mere versions uafhængig, og droppe afhængigheden af xml 4, kan du undvære referencen, og bruge:
dim xmlhttp as variant
Set xmlhttp= CreateObject("msxml2.xmlhttp")
xmlhttp.Open "GET" "http://www.domain.dk/check_version.php", False
xmlhttp.Send
VersionsInfo=xmlhttp.responseText
Avatar billede pissed_squirrel Nybegynder
15. april 2003 - 23:01 #46
Tak det hjalp....

Skal jeg oprette et spørgsmål, så du kan få dine EXTRA point ???

Du har jo fortjent dem ! ;D
Avatar billede mortrr Praktikant
15. april 2003 - 23:16 #47
Nah - det kunne jo være du fik brug for dem.

Held og lykke med projektet.
Avatar billede pissed_squirrel Nybegynder
16. april 2003 - 09:20 #48
Mange tak ;D
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