22. august 2004 - 17:34Der 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?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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 !
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 !").
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.
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.
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.
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
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?
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>
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)
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)
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.
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.