Hej. >1. Hur anropar jag databasen ? Databas kommunikation & SQL QueriesHur kopplar man ihopa VB med My SQL ???
Jag har ett litet projekt som jag vill lösa.
Jag har läst en del VB och nu läser jag databashantering,
men nu är det så att jag vill "styra" databasen med hjälp av VB.
hur gör jag ???
Frågor :
1. Hur anropar jag databasen ?
2. Skall hela sökvägen vara med ?
3. Om "Ja" på fråga 2 vad händer om jag lägger programmet på en annan dator och vill komma åt samma databas ?
4. Hur använder man SQL-kommankon i VB ?
Ja det var väl de frågorna som jag hade för tillfället
(kommer säkert flera efterhand)
Mvh DennisSv: Hur kopplar man ihopa VB med My SQL ???
>2. Skall hela sökvägen vara med ?
>3. Om "Ja" på fråga 2 vad händer om jag lägger programmet på en
>annan dator och vill komma åt samma databas ?
>4. Hur använder man SQL-kommankon i VB ?
Kolla upp vad som finns här på RDO och ADO.
Du kan söka både i forumet, på filarean, tips och tricks m.m. Du
kommer att hitta en hel del.
ADO och RDO handlar om hur man kopplar upp sig mot databasen och
sen använder den kopplingen.
//EmmaSv: Hur kopplar man ihopa VB med My SQL ???
med ADO's RecordSet Objekt.
-----------------------------------------------------
Steg1: Sätt en referens till 'Microsoft ActiveX
Data Objects Library 2.0', för att komma åt ADO.
Steg2: Skapa ett recordset object:
Dim RS As ADODB.RecordSet
Set RS = New ADODB.RecordSet
Steg3: Öppna RecordSet Objektet
RS.Open [Source][ActiveConnection](CursorType)(LockType)
***[ActiveConnection] kan du skapa med hjälp av ADO Data Control som du kan lägga till tillfälligt i ditt projekt -- HögerKlicka på din
ToolBox i VB och välj Components, välj sedan 'ADO Data Control'. Läggtill komponenten och högerklicka på den och tryck 'Build'. Om det är en Access Databas du ska använda väljer du MS JET 4.0/3.51 Driver.
Browsa sedan din .MDB fil och tryck 'Test Connection'. Om du lyckats
så tryck på OK. Nu kommer du se (till vänster om 'Build' knappen i en
textbox) en lång så kallad ConnectionString. Kopiera denna text sträng.
Nu får du skapa en sträng variabel och klippa ut din ConnectionString.
Dim strCN As String
strString = "blablablablablabla"
***Source, som är det första argumentet i Recordeset's Open metod,
väljer du vilken tabell som du vill att recordset objektet ska hämta
information från. Databaser har ofta flera tabeller och relationer mellan
dem, så SQL Queries kan vara väldigt användbart. Istället för att bara
ange en tabell så kan du skriva en SQL Query ex,
SELECT fname, lname FROM Employees WHERE emp_id = 1001
Denna SQL Query hämtar 'fname' och 'lname' kolumnerna från
'Employees' tabellen där kolumnen 'emp_id' innehäller värdet '1001'.
Förmodligen är 'emp_id' primär nyckeln så endast en registrerad
'Employee' kommer att hämtas.
Steg4: Nu har vi all information vi behöver, så nu bygger vi RS.Open:
RS.Open "[Tabell]", strCN, adOpenForwardOnly, adLockReadOnly
Eller med SQL Query:
RS.Open "SELECT (column1), (column2) FROM [Tabell]
WHERE (column3) = (value)", strCN, adOpenForwardOnly, adLockReadOnly
***De två sista argumenten är 'Optional', om du ej anger något kommer standard att tillges till dessa argument. Standard värderna är att informationen visas som en rapport där man kan se all info en gång.
dvs, om din SQL Query / Tabell innehåller flera värden kan du navigera
dig genom hela resultatet en gång framåt (med RS.MoveNext).
***Exemple:
Nedan kommer ett komplett ADO exempel som hämtar alla 'Employees'
i databasen Northwind(du behöver en textbox med 'MultiLine = True'):
Option Explicit
Dim strCN As String
Dim RS As ADODB.Recordset
____________________________________
Private Sub Form_Load()
Set RS = New ADODB.Recordset
strCN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb;Persist Security Info=False"
RS.Open "employees", strCN, adOpenStatic, adLockPessimistic
Do While RS.EOF = False
Text1.Text = Text1.Text + RS.Fields("firstname") & " " & RS.Fields("lastname") & " " & vbCrLf
RS.MoveNext
Loop
End Sub
____________________________
***Detta exempel hämtar information från databasen 'Northwind' och
lägger 'firstname' och 'lastname' kolumnerna i 'Employees' tabellen i en textbox vid namn 'text1' och den byter också rad efter varje 'row' i
databasen(vbCrLf).
Som sagt gåt det att byta ut RS.Open's första argument till en SQL Query.
I föregående exempel kan vi byta ut "Employees" mot ex:
"SELECT * FROM Employees WHERE emp_id = 1001"
Då tar den bara med den employee som har emp_id värde 1001.
(Denna SQL Query antar att kolumnen 'emp_id' finns i tabellen 'Employees'.
'Do While RS.EOF = False' metoden lägger till värden tills raderna
i tabellen 'Employees' är slut. 'RS.MoveNext' måste alltid anges när
du vill retunera flera värden från en tabell, den säger, -Gå till nästa rad!
Om du vill hämta info fler ggr med olika queries, glöm ej att stänga
recordset objektet med, RS.Close och sedan öppna det igen!
Hoppas du fick svar på din fråga!