Avatar billede Kim Neesgaard Seniormester
05. februar 2006 - 12:01 Der er 57 kommentarer og
1 løsning

Forbindelse til en SQL Server 2005 database

Til en 'rigtig' SQL Server database kan man bruge denne forbindelsesstreng:

Dim ConnProd As New SqlConnection("SERVER=mssql.buydomains.dk; UID=xx; PWD=yy; DATABASE=test;")

Kan man bruge en lignende streng til til at forbinde sig med en SQL Server Express 2005 database, altså til fx. tblTest.mdf beliggende i biblioteket App_Data? Hvad vil den konkret skulle være? (Jeg ved godt, at man via kontroller kan forbinde tabellen til fx. et GridView via brugerfladen, men den funktion ønsker jeg i dette tilfælde ikke at bruge).
Avatar billede dr_chaos Nybegynder
05. februar 2006 - 12:06 #1
<remove name="LocalSqlServer"/>du kan bruge
<add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|personal.mdf" providerName="System.Data.SqlClient"/>
i
web.config
Avatar billede Kim Neesgaard Seniormester
05. februar 2006 - 12:10 #2
Det er jeg ikke helt med på - kan jeg få dig til at skrære det lidt mere konkret ud? Angiver du 2 muligheder: som forbindelsesstreng og at der skal noget i web.config eller er det een løsning?
Avatar billede dr_chaos Nybegynder
05. februar 2006 - 13:12 #3
Du tilføjer det jeg skrev i connectionstrings delen af din web.config.

for at få connection string i din aspx side bruger du
ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
Avatar billede dr_chaos Nybegynder
05. februar 2006 - 13:15 #4
du ændre bare personal.mdf til tblTest.mdf for at få fat i din database fil.
Avatar billede Kim Neesgaard Seniormester
05. februar 2006 - 13:17 #5
Ok - det prøver jeg!

Vedr. connection i .aspx siden: hvad skal "ConnectionString" helt konkret være?
Avatar billede dr_chaos Nybegynder
05. februar 2006 - 13:19 #6
du bruger dne på denne måde:
Dim ConnProd As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
Avatar billede dr_chaos Nybegynder
05. februar 2006 - 13:19 #7
Er det forklaring nok ?
Avatar billede Kim Neesgaard Seniormester
05. februar 2006 - 14:11 #8
Det er nok mig, der ikke er så meget hjemme i det, men skal ConnectionString i gåseøjne ikke erstattes af noget andet?
Avatar billede dr_chaos Nybegynder
05. februar 2006 - 14:16 #9
jo  det er mig som lavede en fejl.
Dim ConnProd As New SqlConnection(ConfigurationManager.ConnectionStrings("Navnpåconnectionstringiwebconfig").ConnectionString)
Avatar billede dr_chaos Nybegynder
08. februar 2006 - 08:54 #10
virkede det ?
Avatar billede Kim Neesgaard Seniormester
08. februar 2006 - 11:48 #11
Meget undsyld, at jeg ikke er vendt tilbage, men har ikke haft tid til at afprøve det - kommer tilbage meget snart!!
Avatar billede Kim Neesgaard Seniormester
08. februar 2006 - 21:08 #12
Nu har jeg forsøgt mig med dette (+det i web.config):

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        Dim ConnProd As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
        Dim strSQL As String
        ConnProd.Open()
        strSQL = "SELECT F1, F2 FROM Table1"

        Dim SQLTekstProd As New Data.SqlClient.SqlCommand(strSQL, ConnProd)
        Dim ds As Data.SqlClient.SqlDataReader
        ds = SQLTekstProd.ExecuteReader()

        GridView1.DataSource = ds
        GridView1.DataBind()

        ConnProd.Close()
    End Sub

Jeg får ingen fejl, men kan ikke se Gridview - skærm bliver kun hvid?
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 08:04 #13
står den til autogeneratecolumns=true ? på gridviewet
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 11:02 #14
Ja, den er true.
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 11:04 #15
Får du noget ud fra databasen hvis du tester sætningen i et query window ?
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 11:06 #16
Det er jeg ikke sikker på, hvordan jeg gør? Men hvis jeg knytter tabellen direkte fraGgridView, så vises den pænt med indhold.
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 11:15 #17
prøv at lav en SELECT * FROM Table1
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 11:15 #18
og hedder din tabel Table1 ?
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 11:17 #19
Ja.
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 11:18 #20
får du noget ud med :
SELECT * FROM Table1
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 12:00 #21
Hvor skal jeg indsætte dette? Hvor finder jeg query window?
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 12:12 #22
har du management studio ?
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 12:13 #23
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 12:16 #24
Jeg bruger Visual Web Developer Express.
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 12:18 #25
ok bruger det til at teste database  ting med  ?
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 12:20 #26
Ja.
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 12:22 #27
så prøv at se om der kommer noget ud men den sqlsætning du bruger.
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 12:37 #28
Mener du i GridView eller anden tilgang? GridView vises slet ikke.
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 13:29 #29
anden tilgang.
kommer der noget fra din database med din select sætning
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 13:33 #30
Jeg tjekker lige senere om jeg kan fylde noget i et dataset.
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 17:52 #31
Åh - det er da mig, der ikke tænker mig om! Jeg har jo lige fået at vide i et andet spørgsmål, at AutoEventWireup skal sættes til true, så koden blev overhovedt ikke gennemløbet!!

Men nu hvor det sker, får jeg denne besked:

The entry 'LocalSqlServer' has already been added. (C:\2. Kims data - applikationsudvikling\WebApp\Test - generelt\ASP.NET\SQL Server Express 2005\web.config line 13)

for linien

ConnProd As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)?
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 17:58 #32
Kopier lige din web.config her ind
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 19:10 #33
Kun connectionstringdelen formoder jeg:

<connectionStrings>
    <add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Test 2005.mdf" providerName="System.Data.SqlClient"/>
  </connectionStrings>
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 21:08 #34
paste lige hele din web.config
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 21:09 #35
prøv at benytte denne connectionstring

<connectionStrings>
<remove name="LocalSqlServer"/>
    <add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Test 2005.mdf" providerName="System.Data.SqlClient"/>
  </connectionStrings>
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 21:09 #36
Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

skal være

Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ConnectionString)
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 21:17 #37
Rettelser indført - nu giver linien:

ConnProd.Open()

An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.
Avatar billede Kim Neesgaard Seniormester
09. februar 2006 - 21:18 #38
Her er hele web.config:

<?xml version="1.0"?>
<!--
    Note: As an alternative to hand editing this file you can use the
    web admin tool to configure settings for your application. Use
    the Website->Asp.Net Configuration option in Visual Studio.
    A full list of settings and comments can be found in
    machine.config.comments usually located in
    \Windows\Microsoft.Net\Framework\v2.x\Config
-->
<configuration>
    <appSettings/>
    <connectionStrings>
    <remove name="LocalSqlServer"/>
    <add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Test 2005.mdf" providerName="System.Data.SqlClient"/>
  </connectionStrings>
    <system.web>
        <!--
            Set compilation debug="true" to insert debugging
            symbols into the compiled page. Because this
            affects performance, set this value to true only
            during development.

            Visual Basic options:
            Set strict="true" to disallow all data type conversions
            where data loss can occur.
            Set explicit="true" to force declaration of all variables.
        -->
        <compilation debug="true" strict="false" explicit="true"/>
        <pages>
            <namespaces>
                <clear/>
                <add namespace="System"/>
                <add namespace="System.Collections"/>
                <add namespace="System.Collections.Specialized"/>
                <add namespace="System.Configuration"/>
                <add namespace="System.Text"/>
                <add namespace="System.Text.RegularExpressions"/>
                <add namespace="System.Web"/>
                <add namespace="System.Web.Caching"/>
                <add namespace="System.Web.SessionState"/>
                <add namespace="System.Web.Security"/>
                <add namespace="System.Web.Profile"/>
                <add namespace="System.Web.UI"/>
                <add namespace="System.Web.UI.WebControls"/>
                <add namespace="System.Web.UI.WebControls.WebParts"/>
                <add namespace="System.Web.UI.HtmlControls"/>
            </namespaces>
        </pages>
        <!--
            The <authentication> section enables configuration
            of the security authentication mode used by
            ASP.NET to identify an incoming user.
        -->
        <authentication mode="Windows"/>
        <!--
            The <customErrors> section enables configuration
            of what to do if/when an unhandled error occurs
            during the execution of a request. Specifically,
            it enables developers to configure html error pages
            to be displayed in place of a error stack trace.

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
    </system.web>
</configuration>
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 22:58 #39
har "Test 2005.mdf" liggende i app_data dir ?
Avatar billede Kim Neesgaard Seniormester
10. februar 2006 - 00:19 #40
Ja.
Avatar billede dr_chaos Nybegynder
10. februar 2006 - 08:15 #41
prøv at lave en ny eller omdøb den gamle og fjern mellemrummet sådan at den kommer til at hedde:
"Test2005.mdf"
Avatar billede dr_chaos Nybegynder
10. februar 2006 - 08:16 #42
problemet er at den ikke kan få fat i databasen.
Avatar billede Kim Neesgaard Seniormester
11. februar 2006 - 12:13 #43
Hold da op - det hjalp at fjerne det mellemrum! Nu virker det - mange tak for din tålmodighed!!
Avatar billede dr_chaos Nybegynder
11. februar 2006 - 12:14 #44
perfekt :)
Avatar billede Kim Neesgaard Seniormester
12. marts 2006 - 11:43 #45
Et lille tillægsspørgsmål: hvis jeg tilføjer en tabel i Test2005.mdf (altså i venstre side under DataConnections under Tables) og ligger den under 'Table1' som virker og herefter lader min SQL pege på den nye tabel 'tblTest', så får jeg beskeden 'Invalid object name tblTest', når jeg kører koden. Burde den ikke kende en ny tabel i Test2005.mdf? Min Test2005.mdf står under App_Data i højre side (jeg er skiftet til Visual Studio 2005 i mellemtiden).
Avatar billede Kim Neesgaard Seniormester
12. marts 2006 - 12:29 #46
Jeg fik vist rodet selve databaseFORBINDELSEN tilvenstre sammen ned selve databasen tilhøjre. Når jeg dobbeltklikkede tilvenstre, så åbnede den en Test2005.mdf1 og her var tblTest ikke i. Jeg slettede alle forbindelser og klikkede på Test2005.mdf tilhøjre, oprettede tblTest via forbindelsen og nu kan den findes.
Avatar billede Kim Neesgaard Seniormester
23. marts 2006 - 11:08 #47
Jeg har med fint resultet brugt <add name.... syntaksen til SQL Server, men hvis man skal koble sig på en Access database på samme måde, hvad er da syntaksen?
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 11:16 #48
<connectionStrings>
        <add name="NorthwindConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Northwind.mdb;Persist Security Info=True"
            providerName="System.Data.OleDb" />
    </connectionStrings>
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 11:16 #49
f.eks.
Avatar billede Kim Neesgaard Seniormester
23. marts 2006 - 13:34 #51
Den vil ikke kendes ved ConfigurationManager - skriver den ikke er declared (har lavet en reference til projektet med class'en). Hvis jeg kører den alligevel, giver den meldingen: Unrecognized configuration section 'connectionStrings'?
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 13:37 #52
Er det i din class at den fejler ?
Avatar billede Kim Neesgaard Seniormester
23. marts 2006 - 13:46 #53
Ja - den sætter bølgestreger under ConfigurationManager i class'en og så kan den vel meget naturligt heller ikke hente noget frem under connectionStrings. Iøvrigt sætter den også bølgestreg under Request i Request.ServerVariables(HTTP_HOST) = "www.... - kan det have noget med det at gøre?
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 13:57 #54
HttpContext.Current.Request.ServerVariables(HTTP_HOST)

til føj
Import System.Diagnostics i toppen af siden
Avatar billede Kim Neesgaard Seniormester
23. marts 2006 - 14:09 #55
Så sætter den bølgestreg under HttpContext? Og stadig under ConfigurationManager.
Avatar billede Kim Neesgaard Seniormester
23. marts 2006 - 14:10 #56
Jeg skal lige sige, at jeg er sprunget til at lave dette i VS 2002.
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 14:13 #57
så skal du laver det helt anderledes.
Ved slet ikke om du kan det du forsøger at gøre har aldrig brugt vs.net 2002
Avatar billede Kim Neesgaard Seniormester
23. marts 2006 - 14:37 #58
Ok - så instruktionen kan simpelthen være ukendt for den version?

Jeg kunne i og for sig i dette tilfælde også skrive sådan direkte:

If LCase(Request.ServerVariables("HTTP_HOST")) = "www.x.com" Then
Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("../qccdatabases/AppHits.mdb") & ";")
Else
Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("/DB/Database.mdb"))
End If

men så er der det probem med at noget Dim'et i en If bliver betragtet som privat og ukendt udenfor If'en - ved du, om der er en måde at gøre de Dim'er kendt udenfor If'en?
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