Gjest Slettet-aNZFa3 Skrevet 12. juni 2007 Skrevet 12. juni 2007 Hvordan lager man et database med VB 2005 express?
aadnk Skrevet 12. juni 2007 Skrevet 12. juni 2007 Velg Project -> Add References og dernest COM på dialogboksen som dukker opp, hvoretter du må dobbelklikke Microsoft ADO Ext. 2.8 for DDL and Security i listen. Lag så en ny klasse (eksempelvis med navn Database.cls), og lim inn følgende kode: Klikk for å se/fjerne innholdet nedenfor Imports System.Data.OleDb Public Class Database ' Ulike hendelser du kan legge til Public Event Opened() ' Referanser til den underliggende Access-database Public Connection As OleDbConnection Public Provider = "Microsoft.Jet.OLEDB.4.0" Public Sub New(ByVal NewDatabase As String, ByVal Template As String) Dim Catalog As New ADOX.Catalog(), oCommand As OleDbCommand = Nothing Dim Query As String, Queries() As String ' Databasen må i utgangspunktet være tom - slett tidligere databaser If IO.File.Exists(NewDatabase) Then IO.File.Delete(NewDatabase) End If Try ' Forsøk å lage databasen Catalog.Create(ConnectionString(NewDatabase)) Catch Excep As System.Runtime.InteropServices.COMException Throw New Exception("Cannot create database.", Excep) Finally Catalog = Nothing End Try ' Hent alle spørringene/kommandoene Queries = Template.Split(";") Try ' Databasen er nå klar for åpning Open(NewDatabase) ' Eksekver kommandoene for å bygge opp databasens struktur For Each Query In Queries If Query.Length > 2 Then oCommand = New OleDb.OleDbCommand(Query & ";", Connection) oCommand.ExecuteNonQuery() oCommand.Dispose() End If Next Catch ex As Exception Throw New Exception("Error in populating the database. Cannot execute query.", ex) Finally ' Rydd opp If Not (oCommand Is Nothing) Then oCommand.Dispose() End If End Try End Sub Public Sub New(ByVal ExistingDatabase As String) Open(ExistingDatabase) End Sub Private Function ConnectionString(ByVal FilePath As String) ' Lag tilkoblingsstreng (legg til flere egenskaper om nødv.) Return "Provider=" & Provider & ";" & _ "Data Source=""" & FilePath & """;" End Function Public Sub Open(ByVal FilePath As String) ' Koble til databasen Connection = New OleDbConnection(ConnectionString(FilePath)) Connection.Open() RaiseEvent Opened() End Sub Public Sub Close() Connection.Close() End Sub End Class Etter det kan du lage en ny database ved å deklarere Database-objektet: Dim oDatabase As New Database("C:\Mappe\Fil.mdb", "CREATE TABLE ... (legg inn resten her)")
Gjest Slettet-aNZFa3 Skrevet 12. juni 2007 Skrevet 12. juni 2007 (endret) takker EDIT: jeg skjønte ikke helt den siste koden der. Endret 12. juni 2007 av Slettet-aNZFa3
aadnk Skrevet 12. juni 2007 Skrevet 12. juni 2007 EDIT: jeg skjønte ikke helt den siste koden der. 8842376[/snapback] Du bruker den når du skal lage databasen. NewDatabase er den ønskede filbanen til databasen som skal lages, mens Template bør inneholde (skjønt det ikke er nødvendig om du vil lage en HELT tom database) koden for å lage de ulike tabeller, indekser og relasjoner. Eksempelvis benyttet jeg følgende spørringer i et av mine prosjekter: Klikk for å se/fjerne innholdet nedenfor CREATE TABLE Events( EventID autoincrement constraint EventIDKey unique primary key, EventType integer, Message memo, Style text(255), SenderID integer, RecieverID integer, EventDate datetime, SessionID integer, IsLocal yesno ); CREATE TABLE Nicknames( NickID autoincrement constraint NickIDKey unique primary key , UserID integer, Nickname text(255), UseCount integer ); CREATE TABLE Participants( PartID autoincrement constraint PartIDKey unique primary key, UserID integer, SessionID integer ); CREATE TABLE Sessions( SessionID autoincrement constraint SessionIDKey unique primary key, StartDate datetime, CharSent integer, CharRecieved integer, LogID integer, InitiatorID integer, Participants integer, Events integer ); CREATE TABLE Users( UserID autoincrement constraint UserIDKey unique primary key, Email text(255) constraint UserEmail unique, ResponseTime integer, ResponseCount integer, IsLocal yesno ); CREATE TABLE Logs( LogID autoincrement constraint LogIDKey unique primary key, Path text(255), Lenght integer ); CREATE INDEX SessionIndex ON Events (SessionID); CREATE INDEX SessionIndex ON Participants (SessionID); CREATE INDEX UserIndex ON Nicknames (UserID); CREATE INDEX UserIndex ON Participants (UserID);
Gjest Slettet-aNZFa3 Skrevet 12. juni 2007 Skrevet 12. juni 2007 Sorry skjønte det fortsatt ikke helt, hvor skal jeg skrive inn den infoen? I notisblokk og lagre den som .mdb fil?
aadnk Skrevet 12. juni 2007 Skrevet 12. juni 2007 I notisblokk og lagre den som .mdb fil? 8842601[/snapback] Nei, men du kan godt lagre teksten annetsteds enn selve koden. Selv foretrekker jeg "Resources" (se i My Project), men det har ikke noe å si. Det vesentlige er at du faktisk sender teksten til New-prosedyren: ' Du kan benytte en ekstern fil i samme mappeDim sTemplate = IO.File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory & "DinFilHer.txt") ' Du kan òg benytte ressurser-funksjonaliteten sTemplate = My.Resources.EtFeltHer ' Evt. kan du skrive inn hele teksten direkte sTemplate = "CREATE TABLE Events(" & Environment.NewLine & _ " EventID autoincrement constraint EventIDKey unique primary key," & Environment.NewLine) ' Osv ' Til sist kan du skape databasen Dim oDatabase As New Database("C:\Mappe\Fil.mdb", sTemplate) ' Men sTemplate kan godt være TOM.
Gjest Slettet-aNZFa3 Skrevet 12. juni 2007 Skrevet 12. juni 2007 sry for å spørre igjen... men hvor legger jeg inn den koden
aadnk Skrevet 12. juni 2007 Skrevet 12. juni 2007 men hvor legger jeg inn den koden 8842829[/snapback] Der du vil programmet skal lage databasen. Eksempelvis i en knapps klikkehendelse (Button1_Click), eller når programmet starter (Form_Load blant annet) og databasefilen ikke allerede eksisterer (bruk IO.File.Exists() til å avgjøre dette). Husk at du ikke trenger å bruke HELE koden jeg gav deg - poenget var bare å vise de ulike måtene dette kunne gjøres på. Les kommentarene! For øvrig, har du ikke en bok eller guide du kan se i? Det er virkelig å anbefale. En lærer ikke stort av å bare kopiere kode.
HDSoftware Skrevet 13. juni 2007 Skrevet 13. juni 2007 Jeg er av den oppfatning at databaser med fordel kan opprettes, designes og vedlikeholdes grafisk. Derfor ville jeg heller brukt GUI verktøyene for å lage både database og tabeller etc. Så ville jeg bare opprettet en forbindelse med databasen gjennom Visual Studio. Dermed får du både TableAdapters og Dataset ferdig til bruk. Nesten ingen programmering og alt virker helt glimrende
RulleRimfrost Skrevet 13. juni 2007 Skrevet 13. juni 2007 Det kan være nyttig å lese litt opp på sql. Jeg leste den beste tutorialen jeg har sett på MS sql i dag. Fant den her http://www.functionx.com/sqlserver/index.htm De første 10 sidene er litt for omstendelig, men dette er absolutt laget for vanlige folk. Bruker MS sql server express (gratis), og for å lage en database høyreklikker jeg bare
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå