ASP.NET - Nybegynder, connect med sql server .net 2005

Tags:    asp.net

<< < 12 > >>
Hejsa

Jeg står og skal igang med at lave en website med ASP.net, har stort kendskab med PHP og Mysql, men vil prøve noget nyt. Jeg har et webhotel nu med ASP.NET og MSSQL, men jeg ved ikke lige hvordan jeg skal lave en connection til databasen.

Nogen steder står der at der skal laves noget i web.config filen, og andre steder, står der at man bare skal smide en streng ind i ens filer. Nogen der kan hjælpe mig?

På forhånd tak

Med venlig hilsen
Steffen Maabjerg



13 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Jamen melder den nogle fejl? får du sådan en side med "Server error in application" eller lignende?


Egentlig så inkluderer man ikke en cs fil, man lader sin side nedarve fra den.

I toppen af din ASP.NET fil skriver du:
<%@ Page Language="c#" Inherits="DitNamespace.DinKlassen" %>

I cs filen kan der så stå:
[code="C#"]using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DitNamespace
{
public class DinKlasse : Page //det er vigtigt at klassen nedarver fra Page-klassen.
{
protected override void OnLoad(EventArgs e)
{
//her kan du skrive koden der skal ske når siden åbnes
base.OnLoad(e);
}
}
}[/code]

[code="C#"]I din ASPX fil angiver du så dine elementer og deres placering i HTML strukturen. Altså du kan fx deklarere en <asp:button title="button1" /> Det har du sikkert læst om, men i din C# fil kan du så også tilgå disse elementer.
Ved at du specificerer elementerne, som felter i din klasse således:

[code="C#"]public class DinKlasse : Page
{
protected Button button1;
/* ... */
}[/code]

Grunden til jeg har valgt protected er at feltet skal kunne tilgås fra de ting der nedarver fra klassen (aspx-siden).


Forresten har jeg en ide om hvorfor du fik fejl før. Måske fordi du manglede definere at du skal bruge System.Data namespacet.



Ja jeg er selv i gang med at lære asp.NET men jeg ville mene at du kan gøre det sådan her, hvis du da bruger VB.NET :)
Fold kodeboks ind/udKode 




Når man gør sådan så skal man hver gang man vil forbinde finde sin connectionstring frem og indsætte den og når man så skifter fra en server til en anden (fx fra sin lokale testserver til et webhotel) så skal man til at rette den til alle de forskellige steder.

Jeg vil derfor anbefale at gøre som andre har skrevet til dig, at gemme det i web.config filen:

[code="HTML"]<configuration>
<appSettings>
<add key="ConnectionStrings" value="server=DinServer; uid=DitBrugernavn; pwd=DitPassword; database=DinDatabasesNavn" />
</appSettings>
</configuration>[/code]

Så kan du hente din connectionstring frem med:
[code="C#"]ConfigurationSettings.AppSettings["ConnectionString"][/code]

Og altså skrive:
[code="C#"]SqlConnection dbConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);[/code]

Når du vil oprette en SqlConnection.




Indlæg senest redigeret d. 12.03.2006 19:58 af Bruger #3491
Martin Dybdal <- Det ser ud til at virke, men er ret nybegynder med ASP.Net, så tænkte på om du også kan svare mig på hvordan jeg så hiver data ud fra tabellen: pages i min database, hvor jeg har kolonerne:

Overskrift,
Tekst,
Id.

Se evt. med på www.maabjerg.net



Jeg ville gøre således:

[code="C#"]//Opretter et DataTable-objekt som dataene fra tabellen i databasen kan ligges ned i.
DataTable tabel = new DataTable();

//opretter et SqlCommand-objekt med en forespørgsel der henter alt fra tabellen
SqlCommand command = new SqlCommand("SELECT * FROM pages", dbConn);

//laver en SqlDataAdapter der kan fylde DataTable'en vha. vores SqlCommand
SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

//fylder tabellen
dataAdapter.Fill(tabel);[/code]

Hvis man senere får nogle flere tabeller og har behov for at få lavet relationer mellem forskellige rækker i tabellerne så kan man med fordel putte sine tabeller ned i et DataSet.



Hmm.. den kan åbenbart ikke connecte til databasen..

Her er mit kode:

web.config:
Fold kodeboks ind/udKode 


Default.aspx:
Fold kodeboks ind/udKode 


Noget jeg gør forkert, det må der vel være :)?



For det første ville jeg ikke bruge metoden med at inkludere en top og en bund fil som du gør.

For det andet ville jeg ikke skrive koden i selve min aspx fil, men istedet benytte mig af codebehind i en cs fil.


For det tredje, hvilke fejl sker der siden du mener den ikke kan forbinde til databasen?



Eller ved ikke om det er det der er galt, men når jeg udkommentere alt koden faktisk så kør det.

Men kan jo skyldes mange andre ting.

Men kan du give et eksempel på hvordan jeg kan inkl. en cs fil?

På forhånd tak

Med venlig hilsen
Steffen Maabjerg



For at definere det jeg lige skrev om at du manglede System.Data namespacet skal du skrive:

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

i toppen af din ASPX fil (under Page-direktivet). Men det er altså kun nødvendigt hvis du beholder koden i din ASPX fil.


En anden ting jeg glemte at nævne er at du når du skriver koden i cs filer ved siden af, så skal du compile din klasse til en .dll fil (også kaldet assemply) og ligge den i en mappe der skal hedde "bin". (det er ligemeget hvad dll filen hedder)



Forstår det simpelthen ikke.. har prøvet at gøre nøjagtigt som du gør, men stadigvæk kommer der en fejl

se den på www.maabjerg.net






<< < 12 > >>
t