Online database met gegevens

Status
Niet open voor verdere reacties.

chrisje181

Gebruiker
Lid geworden
23 okt 2008
Berichten
106
Hallo allemaal,

Is het mogelijk om een visual basic 2010 project te laten communiceren met een online database waar hij de gegevens uithaalt?
Zo ja, hoe????
 
Hoi,

Ik heb het zelf een keer gedaan dmv PHP. Maar op zich is het ook mogelijk om, met de goede connectionstring, direct verbinding te maken met een database. Dan moet je trouwens wel een hoster hebben die dat toestaat. Veel gratis hosters op internet staan dat niet toe.

MartinJM
 
heb een eigen .nl website en anders via mijn eigen netwerk hardeschrijf.

alleen hoe moet ik dan de code doen, oftewel help!!
 
Hoi,

In princiepe werkt het (volgens mij) hetzelfde als verbinding maken met een lokale database. Maar dan gebruik je als locatie niet de harde schijf maar een netwerkpad. Ik heb zelf sowieso niet zoveel ervaring met databases en VB.NET, dus ik kan je er verder niet zo goed bij helpen, maar misschien dat anderen dat wel kunnen.

Je moet dus, voor zover ik weet, de connectionstring zo aanpassen dat hij naar een server wijst in plaats van naar een plaats op de harde schijf. Om de goede connectionstring te vinden kan je hier kijken: http://www.connectionstrings.com/.

MartinJM
 
en eventueel via een php pagina, want mijn applicatie wordt denk ik on- en offline beschikbaar. zodat dus de informatie ook online te controleren is.
Dan kan ik namelijk eventueel via een php pagina de connection opbouwen e.d. en vanuit daar ook de gegevens ophalen
 
Sorry, nu kan ik je even niet helemaal volgen.

Je wil nu dus een online en offline databse en de verbinding met de online database via een PHP pagina laten gaan?
En dan wil je de offline database synchroniseren met de online database? Of wil je dat de offline database alleen gebruikt wordt als de online database niet bereikbaar is?

MartinJM
 
het is een online database, gewoon een mysql.
het zijn geen 2 aparte databases maar hij communiceert met de software op de pc of via internet. de pc software wordt offline gebruikt, dus worden de gegevens naar een ini file geschreven zodra je een internet connectie hebt.
 
Dus als je offline bent, zal de data weggeschreven worden naar een ini-file? En als je weer online bent wordt de data weggeschreven naar de database?

Of begrijp ik je nog steeds verkeerd?

MartinJM
 
Jemoet het als volgt zien:

Gebruiker heeft geen internet verbinding:
Opent software op PC,en met een eerder verkregen versie van de ONLINE database
Gebruiker heeft internet:
Opent software op PC vervolgens worden gegevens gesynct naar de database (gegevens uit nieuw ini file naar de DB)
Opent de website: krijgt de up to date gegevens. ook hier wordt weer gesynct. en kenbaar gemaakt welke versie het is.
 
En welke manier wil je gebruiken om te syncen met de online database? Wil je dat doen met PHP of wil je dat doen door de connectionstring naar de server te wijzen?

En is het niet misschien logischer om de gegevens te updaten en de databases te syncen als het programma gestart/gesloten wordt ipv als de website geopend wordt?

Sorry als dit een beetje irritant is, maar voordat ik (en de rest van alle mensen die proberen te helpen) je goed verder kan (/kunnen) helpen, moet ik wel eerst weten wat je precies wil. Anders kom ik met een oplossing die voor jou niet helpt omdat ik het verkeerd begrepen had. Dat is zonde van jouw en mijn tijd.

MartinJM
 
missvhien wel handig omte syncen met software op pc.
De manier waarop (php of connectionstring) weet ik niet, omdat ik de 2e manier niet ken, en aangezien ik niet weet hoe visual basic met php moet communiceren kan ik hiergeen concreet antwoord op geven.
 
Weet je wel hoe een visual basic programma communiceert met een lokale database? Want met een database op een server schijnt het hetzelfde te zijn, alleen dan moet je hem naar een andere locatie wijzen (de server ipv de harde schijf).

Visual basic met PHP laten communiceren is hetzelfde als een webpagina openen en kijken wat erin staat. Hierbij moet je ook nog een beetje extra letten op veiligheid. Je kan hierbij namelijk vrij makkelijk alles onbeveiligd oversturen, waardoor het makkelijk onderschept en gebruikt kan worden door een kwaadwillende.

Ik zelf ben niet zo gek op databases, dus van de eerste methode weet ik ook niet zoveel af. Maar de tweede methode heb ik zelf wel een keer gebruikt, dus daar kan ik je wel bij helpen. Mocht je toch de eerste methode kiezen, dan zal iemand anders je erbij moeten helpen.

MartinJM
 
heb geen ervaring met communicatie databases (lokaal en internet) dus als iemand daar iets over kan vertellen met code's dan helpt ie mij enorm.
Want op internet is het niet erg duidelijk, althans niet voor mij.

en hoe werkt die 2e methode dan (waarvan jij wel wat weet)
 
Hoi,

Als je het met PHP wil doen, dan zorg je voor een PHP script wat zorgt voor de interactie met de database. Vervolgens laat je het PHP script alleen terugsturen wat voor het programma strikt noodzakelijk is.

Dus je zorgt eerst voor een server waar PHP op loopt. Dat is makkelijk te controleren:
PHP:
<?php phpinfo(); ?>
Zou je alle informatie over jouw PHP installatie moeten geven. Als het niet werkt, dan werkt PHP niet en moet je het eerst installeren: http://php.net/.

Daarna zorg je voor een PHP script wat een verbinding maakt met de database en die de goede informatie uitleest en teruggeeft.
Maar hier zitten een paar haakjes en oogjes aan:
- Je moet ook informatie naar de PHP pagina sturen.
- De PHP pagina moet informatie terug kunnen sturen.
Voor het eerste kan je even hiernaar kijken: http://php.net/manual/en/reserved.variables.get.php.
Voor het tweede kan je even hiernaar kijken: http://msdn.microsoft.com/en-us/library/fhd1f0sw(v=vs.110).aspx.

Ik zal nog een klein voorbeeldje schrijven wat je kan gebruiken als referentie.

MartinJM
 
Hoi,

Ik weet dat het nog geen uur later is sinds mijn laatste post, maar vanwege het formaat van de post heb ik besloten er toch een nieuwe post van te maken.

Ik heb het voorbeeld gemaakt. Het is een heel erg simpel voorbeeld wat ook alles behalve veilig is.

Allereerst de database die ik heb gebruikt in het voorbeeld:
Het is een MySQL database met een tabel "Users" die er zo uit ziet:
Knipsel3.PNG
Daarin staan, om mee te kunnen testen, op dit moment 2 dingen:
Knipsel4.PNG

Vervolgens zijn er 2 PHP-bestanden in een map op de server:
1. connect.php
2. DatabaseInteraction.php

connect.php heeft de volgende inhoud:
PHP:
<?php

$host = "server"; //De server waarop de database staat
$data = "database naam"; 
$user = "database login";
$pass = "database password";

?>

DatabaseInteraction.php heeft de volgende inhoud:
PHP:
<?php

require('connect.php'); //Alles voor het verbinden met de database binnenhalen

if($_SERVER["REQUEST_METHOD"] == "GET"){ //Alleen als de request-method "get" is, het volgende stuk uitvoeren

     if($_GET['submit'] == "GetUserNameFromID"){ //Alleen als de username van een id wordt opgevraagd het volgende stuk uitvoeren. Dit voorkomt dat het volgende stuk altijd uitgevoerd wordt. Ook geeft het later makkelijk de mogelijkheid voor meer bewerkingen.
          $ID = $_GET['ID']; //Het meegegeven ID in een variable zetten
          //Met de database verbinden:
          $con = mysql_connect($host, $user, $pass);
	  if (!$con){
  	       die('Could not connect: ' . mysql_error()); //Bij een fout de error weergeven en stoppen
	  }else{
               mysql_select_db($data, $con); //De database selecteren voor de volgende mysql commands
               $result = mysql_query("SELECT * FROM Users WHERE ID='".mysql_real_escape_string($ID)."'"); //Alle gegevens ophalen van waar het ID gelijk is aan het opgegeven ID

               while($row = mysql_fetch_array($result))
               {
                    if($row['ID'] == $ID){
                         echo($row['UserName']); //De goede weergeven op de pagina
                         echo(chr(1)); //Dit is omdat er nog wat achter staat bij mijn hoster. Dit is alleen nodig als dat ook bij jou gebeurt.
                    }
               }
          }
     }

}
?>

Dit kan je ook vanuit de browser gebruiken:
http://fastdir.t15.org/OnlineDatabasePHPConnectionExample/DatabaseInteraction.php?submit=GetUserNameFromID&ID=1000 = MartinJM
http://fastdir.t15.org/OnlineDatabasePHPConnectionExample/DatabaseInteraction.php?submit=GetUserNameFromID&ID=1001 = chrisje181
Dat maakt deze methode minder veilig. Maar als je er een (simpele) encryptie overheen gooit, zal het niet zo'n probleem meer zijn.

Om dat dan vervolgens vanuit VB.NET te gebruiken, kan je het volgende korte stukje code gebruiken:
[CPP] Dim Wb As New System.Net.WebClient
Dim Name As String = Wb.DownloadString("http://fastdir.t15.org/OnlineDatabasePHPConnectionExample/VBInteraction.php?submit=GetUserNameFromID&ID=" & TextBox1.Text)
Name = Name.Substring(0, Name.IndexOf(Chr(1)))
If Not Name = "Unknown UserName" Then
MsgBox("The username from that ID is " & Name)
Else
MsgBox("That ID does not exsist.")
End If[/CPP]

Ik hoop dat dit je een eind verder helpt.

Alle codes die ik hierboven heb gebruikt heb ik zelf geschreven op basis van oude codes van mij, die ik met wat hulp van anderen heb geschreven. Je mag ze allemaal gebruiken als je wil.

MartinJM
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan