Just nu i M3-nätverket
Gå till innehåll

Hittar inte nätverkssökvägen + ok uppbyggnad?


Mossberg

Rekommendera Poster

Vill skapa en koppling till databasen (MS SQL) från aspx-sida. Tror jag har formulerat rätt men får felmed 'Network path not found' med anspegling på objConn.Open(); .

Är det detta som är fel är eller något annat?

Behöver jag t ex ha 'provider' med i objConn och vad ska denna i så fall ha för värde?

 

<%@ Page Language="c#" Debug="true" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

 

<script language="c#" runat="server">

void Page_Load(object obj, EventArgs e)

{

 

//skapa koppling till databasen

SqlConnection objConn = new SqlConnection("Data Source=C:/ASPNET/Data/bank_Data.mdf");

 

//öppna kopplingen

 

SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT * FROM Användare", objConn);

objConn.Open();

 

//fyll ett datasetobjekt

DataSet ds = new DataSet();

myAdapter.Fill(ds, "Användare");

 

//välj ett dataviewobjekt och bind till serverkontrollen

MyDataList.DataSource = ds.Tables["Användare"].DefaultView;

MyDataList.DataBind();

 

SqlCommand myCommand = new SqlCommand();

 

myCommand.Connection = objConn;

myCommand.Connection.Close();

 

}

 

</script>

 

Länk till kommentar
Dela på andra webbplatser

Du kan inte använda sqlclient till en accessdatabas. Den är till för SQL Server. Använd OleDb eller Odbc klienten i stället. Det samma gäller för SqlCommand etc.

 

/Jimmy

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

.MDF är inte access, det är sql server databasfil. Men jag tror att du måste köra en sql server för att kunna använda den.

 

Länk till kommentar
Dela på andra webbplatser

Tack för svar.

 

Undrar...Vart ni får Access ifrån? Betyder MS SQL...Access? Hmmm..?

 

Kör från MS SQL...Server 2000.

 

Länk till kommentar
Dela på andra webbplatser

Bra sida men problemet kvarstår, network path not found (jag är rätt säker på att koden stämmer förövrigt).

 

D kanske hjälper att hjälpa om jag berättar hur det ser ut:

 

MS SQL server 2000 körs på samma dator som jag kör aspx-sidan från.

Katalogen där databasfilen ligger har sökväg: c:/ASPNET/Data/*.mdf

 

 

Kan man säga att Initial Catalog är c:/ASPNET/Data och Data Source är *.mdf ?

Eller ska jag ange en ip-adress som Data source?

 

Tacksam för svar/moss

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Du anger inte sökvägen till databasfilen med SQL. Det är bara med Access. Varav mitt svar. Kollade tyvärr inte din extension .mdf, Access använder ju .mdb. Initial catalog avser databasens namn, e g pubs eller northwind för exempeldatabaserna som brukar installeras med MSDE eller SQL Server 2000.

 

För att skapa en datakälla får du antingen får du ange servers namn + adress mm i din connection string eller så kan du skapa en automatiskt med hjälp av Visual Studio.Net eller i Kontrollpanelens / Administrativa Verktyg / Datakällor (ODBC). Skapa en System DSN. Välj Sqlclient som drivrutin och ange serverns namn. Döp datakällan till t ex minserver. Sen när du skapar en sqlconnection kan du skriva, t ex

 

data source=minserver;uid=användarnamn;pwd=lösenord;initial catalog=databasen

 

Skriver du ingen initial catalog används den du angav som förvald i datakällan.

Om du använder windows inloggning (i stället för sql) behöver du inte ange användarnamn och lösenord. Då behöver i stället aspnet kontot ha access till databasen. Observera att i .NET skall du inte ange providern (SQLOLEDB.1) med SqlConnection.

 

Mvh

 

Jimmy

 

 

Länk till kommentar
Dela på andra webbplatser

Ok, ett steg närmare lösningen, men får 'Login failed for user 'HENRIK\ASPNET'.

 

Strängen ser ut så här vid detta tillfälle:

"Data Source=henrik;Initial Catalog=c:/ASPNET/Data; Integrated Security=SSPI"

 

Där henrik är serverns namn, det är i a f vad som står i Service Manager'n när den går.

 

'Integrated Security=SSPI' för en Trusted connection enligt: http://www.connectionstrings.com/

 

Jag provade med att ange mitt användarnamn för windows, samt lösen för detta utifrån den raden jag fick, då gick det inte alls.

 

F ö så är servern satt till 'Authentication : Windows only' och 'Service account: System account', hur spelar detta in?

 

Fick heller ingen ordning på det där med att skapa en datakälla, det blir 'Network path not found'.

 

Känns som att det närmar sig i a f, men vad är det som är fel?

 

[inlägget ändrat 2004-08-28 13:21:22 av Mossberg]

Länk till kommentar
Dela på andra webbplatser

Initial catalog är namnet på din databas, inget annat, ingen filpath ska i överhuvudtaget existera i denna connectionsträng.

 

Data source ska vara namnet på den dator du har SQL Server på, vilket jag antar att "Henrik" är ?

 

Sen är det en fråga om hur du konfigurerat säkerheten, enklast skapar du en login för din databas under Security > Logins och under database access klickar du i din db och sedan ger denna login admin rättigheter för din databas (detta är ju bara en utvecklings server ?)

 

Eller så använder du helt enkelt "sa" användaren som du (kanske) skapade när du installerade, det beror lite på vilka val du gjorde under installationen.

 

Sedan kör du:

 

"Data Source=henrik;Initial Catalog=DittDBNamn; User ID=DinAnvändare;Password=DittLösenord;"

 

Observera mellanrummet i "User ID"

 

 

Länk till kommentar
Dela på andra webbplatser

Ge "HENRIK\ASPNET" rättigheter i SQL databasen genom att lägga till användarkontot under Security / Logins som t e x db owner (databasägare) på den databas du vill komma åt.

 

/Jimmy

 

 

Länk till kommentar
Dela på andra webbplatser

Nu så, lite annat upplägg i den server jag använder (120-dagars trial MS SQL Server 2000) men det löste sig genom att köra på Jimmys råd.

Detta genom att gå in i Tools -> Wizards -> Database -> Create Login Wizard o sedan Windows Account och ange HENRIK/ASPNET för tillgång till min databas.

 

Två frågor till:

Behöver jag stänga databaskopplingen efter hämtat, eller sker det automatiskt? Jag märker att det funkar vilket jag har med stängningen eller inte, men är det en fördel att stänga enligt:

 

SqlCommand myCommand = new SqlCommand();

myCommand.Connection = objConn;

myCommand.Connection.Close();

 

Alt. Funkar: 'objConn.Close();' lika bra?

 

Sen är jag lite intresserad av hur det funkar när man i ett senare skede vill lägga över sin databas på ett webbhotell, är det bara att flytta över databasen (ftp'a) till dess server? Eller måste jag börja från början o bygga upp från grunden? Hur funkar det?

 

Tack för hjälp, poäng/Henrik

 

[inlägget ändrat 2004-08-30 10:19:07 av Mossberg]

[inlägget ändrat 2004-08-30 10:25:47 av Mossberg]

Länk till kommentar
Dela på andra webbplatser

Alt. Funkar: 'objConn.Close();' lika bra?

 

Ja man bör alltid stänga den explicit, båda sätten fungerar.

 

Ett tredje sätt är att skicka med CommandBehavior.CloseConnection om man bara gör en query:

 

objreader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

 

Sen är jag lite intresserad av hur det funkar när man i ett senare skede vill lägga över sin databas på ett webbhotell, är det bara att flytta över databasen (ftp'a) till dess server? Eller måste jag börja från början o bygga upp från grunden? Hur funkar det?

 

Det är mycket lätt att backa upp en database i SQL Server, du högerklickar och väljer all tasks > backup database

 

Man kan också generera ett SQL script som man kan använda för att återskapa databasen, dock utan data i det fallet.

 

Du kan också dumpa till en textfil, dumpa till en access databas, det finns massor av sätt. Det hela beror väl mer på hur webhotellet har det fixat och vilket format de vill ha det i.

 

Kanske ska nämna att de flesta webhotell brukar ta hutlöst betalt för SQL Server, men det kanske du märkt redan ?

 

 

Länk till kommentar
Dela på andra webbplatser

Har faktiskt inte hunnit kolla på priser än, är det lika dyrt för alla typer av SQL servers? Även MySQL?

 

Har egentligen ingen aning om vad jag ska använda än (kör på SQL för att jag inbillar mig att det är mer i tiden, för att jag vill lära mig...o för att det fanns en gratisversion!), jag tycker det verkar som de flesta tycker att SQL är att föredra framför Access. Vad är eg skillnaden? Hur kan jag avgöra vad jag behöver?

 

Men hursomhelst så är det alltså lätt att få över databasen till Access vilket låter bra ifall det är vad som kommer att gälla.

 

/Henrik

 

Länk till kommentar
Dela på andra webbplatser

Ett tredje sätt är att skicka med CommandBehavior.CloseConnection om man bara gör en query:

 

objreader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

CloseConnection funkar väl så att den stänger automatiskt connection när kör reader.Close()?

Så man måste vara noga med att stänga readern när man är klar med den.

 

Länk till kommentar
Dela på andra webbplatser

MySQL brukar vara billigare, men då är det förmodligen också PHP och Linux du får köra med, har hittills inte sett någon som erbjuder MySQL med ASP trots att det är helt möjligt.

 

Vet inte varför de tar så mycket betalt för MS SQL Server, utslätat på ett antal hundra kunder borde inte licens konstnaden ha någon större betydelse, det är väl snarare så att de tycker att det är en avancerad feature och tar betalt efter det.

 

Men det var längre sedan jag var på jakt efter wehotell så det kanske ändrat sig.

 

Den grundläggande skillnaden mellan SQL Server och Access är att access är filbaserad, du har en databas fil på disken, när en fråga körs emot denna läses den in och processas varje gång.

 

SQL Server ligger som en tjänst och lyssnar på portar, ungefär som en webserver, detta gör att sql servern har betydligt bättre prestanda.

 

 

 

Länk till kommentar
Dela på andra webbplatser

CloseConnection funkar väl så att den stänger automatiskt connection när kör reader.Close()?

Så man måste vara noga med att stänga readern när man är klar med den.

 

Det har du rätt i.

 

Länk till kommentar
Dela på andra webbplatser

Nu vill jag köra en variant på denna fungerande databaskoppling.

Jag har en dropdownlist och en skicka-knapp, man väljer helt enkelt hur de olika posterna ska sorteras och klickar på knappen för att visa posterna utifrån vad som valdes i listan.

Jag förstår if-satsens (kanske passar bättre med switch frst..?) uppbyggnad men är osäker på vad som ska stå med i if-satsen o vad som ska lämnas utanför:

 

SqlConnection objConn = new SqlConnection("Data Source=henrik;Initial

Catalog=bank;Integrated Security=SSPI");

 

SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT * FROM Användare", objConn);

objConn.Open();

 

if (ddlVal.SelectedIndex == 0)

{?????Användarinfo skall sorteras efter Förnamn}

 

if (ddlVal.SelectedIndex == 1)

{?????Användarinfo skall sorteras efter Efternamn}

 

DataSet ds = new DataSet();

myAdapter.Fill(ds, "Användare");

 

MyDataList.DataSource = ds.Tables["Användare"].DefaultView;

MyDataList.DataBind();

 

objConn.Close()

 

.............

Hur anger jag värdet (det okända) i serverkontrollen?:

 

<%# DataBinder.Eval(Container.DataItem, "?????") %>

....................

 

 

Länk till kommentar
Dela på andra webbplatser

Du kan ju modifiera din sql-sats beroende på vilket val man gjort i listan.

Vänta med adaptern tills du vet vilken sql som ska köras.

 

if (ddlVal.SelectedIndex == 0)

{

sql = "SELECT * FROM Användare ORDER BY Förnamn";

}

elseif (ddlVal.SelectedIndex == 0)

{

sql = "SELECT * FROM Användare ORDER BY Efternamn";

}

else //Ingen markerad

{

sql = "SELECT * FROM Användare ORDER BY Förnamn"; // Eller vad du nu vill..

}

SqlDataAdapter myAdapter = new SqlDataAdapter(sql, objConn)

objConn.Open();

// osv osv..

 

Länk till kommentar
Dela på andra webbplatser

Tack.

 

Hur får jag nu ut värdet till serverkontrollerna? Som det ser ut nu:

 

<asp:datalist id="MyDataList" RepeatColumns="2" RepeatDirection="Vertical" runat="server">

<itemtemplate>

<div style="padding:15,15,15,15; font-size:10pt; font-family:Verdana">

<%# DataBinder.Eval(Container.DataItem, "") %>

<br>

<%# DataBinder.Eval(Container.DataItem, "") %>

<br>

<%# DataBinder.Eval(Container.DataItem, "") %>

<br>

<%# DataBinder.Eval(Container.DataItem, "") %>

<br>

<%# DataBinder.Eval(Container.DataItem, "") %>

<br>

</div>

</itemtemplate>

</asp:datalist>

 

Not. Kan inte rösta mer idag, får slänga in poäng imorrn.

[inlägget ändrat 2004-08-30 12:57:09 av Mossberg]

Länk till kommentar
Dela på andra webbplatser

Funkar inte tex

 

<%# DataBinder.Eval(Container.DataItem, "Efternamn") %>

 

Vad blir resultatet ?

 

[inlägget ändrat 2004-08-30 13:06:22 av PBL]

Länk till kommentar
Dela på andra webbplatser

Syftar på: RepeatColumns="2" RepeatDirection="Vertical" ?

Dom ska inte vara där, blev fel.

 

...om inte, vad menar du?

Har provat med "*" men det funkar inte, ska jag använda en användarkontroll ist? Fast det borde ju fungera på samma sätt..?

 

Länk till kommentar
Dela på andra webbplatser

Jag ändrade mitt inlägg, blev förvirrad om problemet.

 

Exakt vilket fel får du när du kör med :

 

<%# DataBinder.Eval(Container.DataItem, "Efternamn") %>

 

 

Länk till kommentar
Dela på andra webbplatser

Jo, menade att om jag skriver in ett värde ex användarnamn så har jag ju låst kontrollen till att visas på just det stället, jag vill ju att sortera-funktionen ska gå in här...FEL, hupp, posterna sorteras ju bara efter vad jag väljer, hela..! Eeh he, glöm min fråga.

 

Frågan ska vara: Hur får jag det gjorda valet högst upp i varje post?

 

Länk till kommentar
Dela på andra webbplatser

Nej, jag vill att ha det såhär:

 

Förnamn

Efternamn

 

Om man valt sortera efter förnamn.

 

Efternamn

Förnamn

 

Om man sorterat efter Efternamn o s v...

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...