Avatar billede Kim Neesgaard Seniormester
22. august 2004 - 17:34 Der er 30 kommentarer og
2 løsninger

Forbindelsesstreng til en Access database

Når man opretter en Simple Data Report i ASP.NET Web Matrix, foreslås følgende forbindelsesstreng:

Dim ConnectionString As String = "server=(local);database=pubs;trusted_connection=true"

Jeg har nu med basis i de mange indlæg om samme enme her på sitet prøvet de fleste forslag og er endt med:

Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/test/asp-net/learnvbnet/db1.mdb") & ";"

Den brokker sig imidlertid over både 'Provider' og 'Driver', så jeg er løbet lidt tør for ideer - er der nogen der ved, hvad man skal skrive i stedet for Provider=Microsoft.Jet.OLEDB.4.0?
Avatar billede snepnet Nybegynder
22. august 2004 - 17:36 #1
prøv at kig her... den er rigtig god :
www.connectionstrings.com
Avatar billede snepnet Nybegynder
22. august 2004 - 17:37 #2
Der finder f.eks. denne her :
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"
Avatar billede arne_v Ekspert
22. august 2004 - 17:38 #3
OLE DB connection til Access:

        Dim con As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=")


SQLServer connection:

        Dim con As SqlConnection = New SqlConnection ("server=ARNEPC2;Integrated Security=SSPI;database=Test")

connection string og database/driver type skal passe sammen !
Avatar billede Kim Neesgaard Seniormester
22. august 2004 - 17:47 #4
Men så skriver den:

Server Error in '/' Application.
--------------------------------------------------------------------------------

Keyword not supported: 'provider'.

og det samme sker med 'Driver'.
Avatar billede arne_v Ekspert
22. august 2004 - 17:49 #5
Jeg tror altså at forsøger at lave en SqlConnection med en OLE DB Access connection
string !

Kig lige på mine 2 eksempler igen.
Avatar billede snepnet Nybegynder
22. august 2004 - 18:09 #6
neesgaard... kan du ikke prøve at oprette en ny forbindelse fra webmatrix, og så være sikker på at du vælger Access Database.

hvis webmatrix har foreslået den connectstring du skriver, så har du givetvis prøvet at lave en forbindelse til en sqlserver, og så får du det problem som arne gør opmærksom på (altså "connection string og database/driver type skal passe sammen !").
Avatar billede snepnet Nybegynder
22. august 2004 - 18:16 #7
Hvis du opretter forbindelsen fra webmatrix, og bare tager fat i en tabel i din base, og trækker den ind på din form, skulle du gerne ende op med en datasourcecontrol i denne stil :

<wmx:AccessDataSourceControl id="AccessDataSourceControl1" runat="server" SelectCommand="SELECT * FROM [Categories]" ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\SomeDB.mdb"></wmx:AccessDataSourceControl>

Men der findes også sådan en her :
wmx:SqlDataSourceControl
Og hvis det er sådan en du har, vil det ikke gå godt med en connectionstring der forudsætter en accessdatabase.

Er det måske det der er sket ?

Mvh
Avatar billede Kim Neesgaard Seniormester
22. august 2004 - 19:04 #8
Ja - jeg tog udgangspunkt i en 'Simple Data Report', og det er så vel den, der baserer sig på SQL Server? Skal man i stedet forbinde i en almindelig formular? Jeg har prøvet at trække basen ind i formen i Web Matrix, men det vil den ikke være med til.
Avatar billede snepnet Nybegynder
22. august 2004 - 20:02 #9
det der vindue som du som standard har i øverste højre side... hvis du klikker i den tab der hedder data, og klikker på det ikon med en cylinder, en ledning og et +, så kan du vælge mellem Access Database eller SQL server/MSDE Database.
hvis du der vælger Access Database og peger på den database du vil arbejde med, så skulle du i det oprindelige vindue få mulighed for at "bladre" i databasen.

du kan så bare trække en given tabel ind på din form, og der vil så blive oprettet noget i stil med følgende aspx-kode til dig:

<wmx:AccessDataSourceControl id="AccessDataSourceControl1" runat="server" SelectCommand="SELECT * FROM [Categories]" ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\Program Files\AxTools CodeSMART 2003 for VS.NET\Personal.mdb"></wmx:AccessDataSourceControl>
<wmx:MxDataGrid id="MxDataGrid1" runat="server" DataSourceControlID="AccessDataSourceControl1" BorderColor="#CCCCCC" AllowSorting="True" DataMember="Categories" AllowPaging="True" BackColor="White" CellPadding="3" DataKeyField="Categ" BorderWidth="1px" BorderStyle="None">
    <PagerStyle horizontalalign="Center" forecolor="#000066" backcolor="White" mode="NumericPages"></PagerStyle>
    <FooterStyle forecolor="#000066" backcolor="White"></FooterStyle>
    <SelectedItemStyle font-bold="True" forecolor="White" backcolor="#669999"></SelectedItemStyle>
    <ItemStyle forecolor="#000066"></ItemStyle>
    <HeaderStyle font-bold="True" forecolor="White" backcolor="#006699"></HeaderStyle>
</wmx:MxDataGrid>

Den laver altså dels en datasourcecontrol, og en presentationsmulighed (MxDataGrid) til dig.

Det er en vældig hurtig måde at få noget data fra en database vist på, og den datasourcecontrol du får oprettet kan så bruge i alle de sammenhænge du har lyst til, og det MxDataGrid er da en start, men det kan du jo bare drøne ud til højre hvis det ikke er det du er interesseret i.

Men... hvis du gør det sådan, skulle det meget gerne fungere i første hug, og så har du et udgangspunkt at arbejde videre ud fra.

Du vil sansynligvis blive træt af den måde inden for ganske få splitsekunder, og lave det nødvendige i koden selv (f.eks. sådan som arne skrev), men som sagt.... det er et udgangspunkt, som gerne skulle give dig hul igennem med det samme.

Mvh
Avatar billede Kim Neesgaard Seniormester
22. august 2004 - 20:57 #10
Tak for forklaring - nu fik jeg det til at virke og har et startpunkt! Det er vældig godt til en nybegynder! Jeg udforsker koden lidt nøjere.
Avatar billede snepnet Nybegynder
22. august 2004 - 21:02 #11
super :o) - du får et svar herfra, men få lige et fra arne også.
mvh, og held og lykke med det.
Avatar billede arne_v Ekspert
22. august 2004 - 21:05 #12
kommer her
Avatar billede Kim Neesgaard Seniormester
22. august 2004 - 21:18 #13
Hermed point i en - håber jeg - retfærdig fordeling. Mange tak til jer begge!
Avatar billede snepnet Nybegynder
22. august 2004 - 21:22 #14
der er i hvert fald ikke nogen der har fået mere end andre :oD
Avatar billede snepnet Nybegynder
22. august 2004 - 21:22 #15
undskyld.... jeg kunne ikke lade være :o)
Avatar billede Kim Neesgaard Seniormester
22. august 2004 - 22:15 #16
Hmm - nej, der gik koks i den, men nu skulle den være der....!
Avatar billede snepnet Nybegynder
22. august 2004 - 22:28 #17
Det var også bare for at lave fis :o) - det var så muntert det med den retfærdige fordeling på 0 og 0 :oD
Avatar billede Kim Neesgaard Seniormester
22. august 2004 - 22:46 #18
Ja - ingen forskelsbehandling her!!!
Avatar billede Kim Neesgaard Seniormester
23. august 2004 - 20:09 #19
Jeg vover at fortsætte dette spørgsmål lidt, da jeg synes det hænger naturligt sammen.

Nu har jeg jo med førnævnte metode med drop tabel fået dannet denne:

<wmx:AccessDataSourceControl id="AccessDataSourceControl1" runat="server" SelectCommand="SELECT * FROM [Table1]" ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\WebApp\Test - generelt\ASP.NET\LearnVBNet\db1.mdb"></wmx:AccessDataSourceControl>

men den kører jo kun, hvis db1.mdb ligger lokalt. Hvordan skal den se ud, hvis den skal køre på en server og stien er

Server.MapPath("/test/asp-net/learnvbnet/db1.mdb")

?
Avatar billede arne_v Ekspert
23. august 2004 - 20:12 #20
Access database kan kun tilgåes lokalt.

Hvis den ligger på en anden server så skal du bruge:

\\server\share\dir\navn.mdb

(men performance vil være gyselig)

Anden server => skift til MSDE.
Avatar billede snepnet Nybegynder
23. august 2004 - 20:23 #21
Men bortset fra det burde du bare kunne sætte din connectionstring på wmx-kontrollen i koden ved :

AccessDataSourceControl1.ConnectionString = "...";

Og så kan du jo eventuelt lægge den i web.config.
Avatar billede Kim Neesgaard Seniormester
23. august 2004 - 20:33 #22
Nu spørger jeg nok dumt, men skal stien til db1.mdb ikke ind efter Data Source? Jeg har en web.config fil - skriver jeg blot ovennævnte ind som en separat linie?
Avatar billede snepnet Nybegynder
23. august 2004 - 20:36 #23
Jeg synes du skal skrive hele din connectionstring ind der :

// sættes ind lige under <configuration>
<appSettings>
  <add key="ConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\WebApp\Test - generelt\ASP.NET\LearnVBNet\db1.mdb" />
</appSettings>
Avatar billede snepnet Nybegynder
23. august 2004 - 20:36 #24
Ved du hvordan du henter den i koden ?
Avatar billede Kim Neesgaard Seniormester
23. august 2004 - 21:20 #25
Nej! Hvad vil Data Source skulle hedde, hvis den ligger på en webserver?
Avatar billede snepnet Nybegynder
23. august 2004 - 21:26 #26
hvis du skal hente den fra appSettings i din konfigurationsfil kan du gøre sådan her :

string conString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];

Jeg plejer selv at lave en lille klasse til det f.eks.:

using System.Configuration;
public class Settings
{
  public static string ConnectionString
  {
      get{return ConfigurationSettings.AppSettings["ConnectionString"];}
  }
}

Så kan du lidt snildere hente den rundt omkring i koden med :
string connString = Settings.ConnectionString;

(det er bare skrevet her, så der kan godt være lidt stavefejl)
Avatar billede arne_v Ekspert
23. august 2004 - 21:31 #27
Du kan ikke bruge en MDB fil som ligger på en web server.

Kun på lokal disk eller på Windows share.
Avatar billede snepnet Nybegynder
23. august 2004 - 21:35 #28
nåh.... det var det du spurgte om :o) - jeg forstod det ikke helt da jeg læste det, så jeg svarede kun på det med Nej ! (gik ud fra det var det med konfigurationsfilen du henviste til der :o)
Avatar billede Kim Neesgaard Seniormester
23. august 2004 - 21:35 #29
snepnet -> Dette er vist en anelse indviklet for en begynder! Hvordan ville det helt konkret skulle stå inde i wmx:AccessDataSourceControl?

arne_v -> I ASP 3.0 kan man godt bruge en .mdb på en webserver - er det anderledes i ASP.NET?
Avatar billede snepnet Nybegynder
23. august 2004 - 21:42 #30
der skal ikke stå noget i forbindelse med wmx:AccessDataSourceControl (der kan du bare sætte din ConnectionString til "", men du skal så sørge for at sætte den i din page_init ell.

void Page_Init(object sender, EventArgs e) {
    this.AccessDataSourceControl1.ConnectionString="<din connectstring>";
}

Og det er så <din connectstring> du kunne hente fra din konfigurationsfil som jeg skrev i http://www.eksperten.dk/spm/531852#rid4873062

er du med på den ?
mvh
Avatar billede Kim Neesgaard Seniormester
23. august 2004 - 21:52 #31
Jeg vil sige det på den måde, at jeg vil forsøge mig frem med de oplysninger, jeg nu har fået!!
Avatar billede snepnet Nybegynder
23. august 2004 - 22:04 #32
Du spørger bare hvis der er noget.
mvh
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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