webForumDet fria alternativet

ASP.NET och databaser?

.NETur .NET

12 svar · 576 visningar · startad av Mika3l

Mika3lMedlem sedan nov. 20018 492 inlägg
#1

Hej(åter igen)!

Vilken databas använder man sig av vanligtvis när man använder ASP.NET?
Misstänker Access...
Går det att använda My_SQL också?

Tacksam för svar!

/Mika3l

------------------
Laddar... ;-)

SPiNMedlem sedan mars 20007 896 inlägg
#2

Man kan använda alla välkända databaser, eller _kommer_ ivf att kunna göra det när en officiell version släpps av .NET-frameworken. Troligtvis kan du använda Access, MySQL, SQL Server, + ett par till nu i betan också.

------------------
SPiN, bjorne.w@telia.com

-- En ask vet jag stånda - den Yggdrasil heter, ett väldigt träd överöst av vita sanden. --

Mika3lMedlem sedan nov. 20018 492 inlägg
#3

Vad bra :D

Tack SPiN!

/Mika3l

------------------
Laddar... ;-)

ToonsterMedlem sedan feb. 20001 590 inlägg
#4

Kan meddela att ADO.Net har fått en behövlig uppgradering. Bla. så finns recordseten kvar i minnet, även när man stängt anslutningen.

Man behöver alltså inte ta upp en anslutning onödigt länge.

/T

------------------
Jensen Ambassadör, mitt bästa köp! www.jensen.no

edebroMedlem sedan aug. 2001261 inlägg
#5

Nån som kan visa en liten kodsnutt på hur det ser ut när man arbetar med databaser i .NET(tänkte mest på ASP.NET)

Jag har svårt att tänka mig att det kan vara lika enkelt som i ASP 3.0
Eller?

------------------
Mikael Edebro
http://divx.edebro.net

NETworkMedlem sedan juni 20011 732 inlägg
#6

Det är inte alls svårt. En enkel sida programmerad i nya .net består av tre delar

a) Utformningen av sidan som visar gränssnittet mot användaren (HTML, DHTML, javascript etc). Vanlig statisk kod helt enkelt som aldrig exekveras på servern utan bara skickas vidare till din webbläsare.

b) Asp.NET är en teknik för att bygga upp ett dynamiskt gränssnitt mot användaren. Detta körs på servern (runat=server) och genererar både html, dhtml och javascript ut till användaren. Observera att asp.net INTE har något med databaskopplingar och andra beräkningar att göra!

  1. Ett programmeringsspråk. ALL funktionalitet ligger bakom asp.net i form av ett riktigt objektorienterat programmeringsspråk, exempelvis c# eller vb.net. Här skapar du all funktionalitet som du presenterar med ditt asp.net-lager!

Ett exempel:

Jag skapar en sida som heter test.aspx (aspx är filändelsen för sidor med asp.net). Det första jag gör är att skapa en enkel design med vanlig html. Inget konstigt med det. Men när jag ska lägga funktionalitet på sidan så kommer du dock att märka stora förändringar. Glöm allt vad <input> och <% =blahblah %> heter...

Alla asp.net-taggar börjar med <asp: och slutar med /> eller </asp> om du så vill. Jag skapar ett formulär:

<asp:TextBox id="MinTextbox" Text="Min första textbox" Width="200px" runat="server"/>

Din webbläsare vet naturligtvis inte vad en <asp:textbox> är för något. Men som du kanske ser så finns attributet runat=server i taggen, det innebär att den här koden exekveras på servern. Det som skickas till din webbläsare är en vanlig input type=text...

Vad är då poängen med detta? Jo, den här utformingen gör det oerhört enkelt att programmera mot en kontroll (exempelvis en textbox) och använda dem i din kod på olika sätt! Jag återkommer till det alldeles strax.

Efter det att jag skapat min textruta vill jag ha en submitknapp:

<asp:Button id="MinKnapp" Text="Skicka" OnClick="MinFunktion" runat="server" />

Här skapar jag en submitknapp med texten "Skicka". Inga konstigheter här heller. Precis som tidigare så exekveras den här koden innan den skickas tillbaka till användaren. Som du ser finns det även en OnClick i knappen. Om du trycker på knappen så kommer jag därför att starta en funktion som heter "MinFunktion". Observera att det är nu det blir intressant, denna funktion skriver jag alltså i ett riktigt programmeringsspråk. Det går att skriva koden direkt i aspx-dokumentet men det är naturligtvis betydligt trevligare att ha programmet i en egen fil med filändelsen .cs.

Innan jag börjar programmera min funktion ska jag omsluta mina asp.net-taggar med <form runat="server"></form>. Glöm post och get och sådant, det där tar .net hand om helt automatiskt!!! Det räcker tom med en enda formtagg runt hela sidan oavsett hur många formulär du har, det är oerhört smidigt! :)

Själv har jag programmerat lite c# så jag drar mina exempel i det språket. c# kallas för ms eget java och liknar (säger de som vet) c++ en del. Det är med andra ord väldigt kraftfullt och kan användas till betydligt mer än att programmera webbsidor (du kan exempelvis programmera windowsprogram).

En funktion i c# kan se ut så här:

void MinFunktion(object Source, EventArgs e) {

...min kod här...

}

När jag trycker på knappen så hamnar jag alltså i den här funktionen. Här kan jag göra ALLT. Hämta data från en databas och fylla textboxen, eller tvärtom... spara den text som jag skrev i min textruta... och en massa andra saker.

Om jag vill hämta upp den text jag skrev in i textrutan så behöver jag bara anropa min textbox och hämta texten, det är enkelt! Textboxen hade id="MinTextbox" och på den kan jag köra .Text - så här kan det se ut:

string MinVariabel = MinTextbox.Text;

Här hämtar jag helt enkelt den text jag skrivit in i textboxen och lägger texten i en variabel som jag döpt till "MinVariabel". Säg att jag vill göra tvärtom, när jag trycker på knappen så vill jag fylla min textbiox med en text:

MinTextbox.Text = "Denna texten kommer att visas i textboxen!";

Jag vill också att texten på min knapp ska ändras när jag trycker på den, istället för "Skicka" så ska det stå "Tryck igen!". Submitknappens id är MinKnapp:

MinKnapp.Text = "Tryck igen!";

Mitt program ser nu ut så här:

void MinFunktion(object Source, EventArgs e) {

MinTextbox.Text = "Denna texten kommer att visas i textboxen!";
MinKnapp.Text = "Tryck igen!";

}

Vad som händer när jag trycker på knappen är alltså att texten "Denna texten kommer att visas i textboxen!" visas i textboxen samtidigt som texten på knappen kommer att ändras från "Skicka" till "Tryck igen!".

Vad ska hända om man trycker igen? Tjaa, andra gången man trycker så kan vi ta bort all text igen. Vi börjar med att kolla att knappen redan har blivit tryckt en gång, det gör vi med en if-sats. Vi vet att om texten på knappen är "Tryck igen!" så har besökaren redan tryckt en gång.

if (MinKnapp.Text == "Tryck igen!") {

...min kod här...

}

Alltså... vi frågar om (if) knappen innehåller texten "Tryck här!" (vilken den ju gör när man tryckt på den en gång tidigare) så ska jag köra den koden som står efter if-satsen. Första gången du trycker på knappen har ju knappen texten "Skicka" vilket innebär att den här koden INTE körs.

MinTextbox.Text = "";
MinKnapp.Text = "Skicka";

Texten i textboxen försvinner och namnet på knappen ändras tillbaka till "Skicka" igen. Smidigt va!? :)

Det hela går alltså ut på att du designar sidan med html, dhtml (eller vad du vill), gör din funktionalitet i ett riktigt programmeringsspråk som ligger UTANFÖR html-koden och presenterar dynamiskt innehåll med asp.net.

Nu när du förhoppningsvis har lite förståelse om grunderna är det ändå lätt att ta ett kliv in i databaser och mer komplexa funktioner. Faktum är att du inte behöver mer asp.net-kod än så här för att skriva ut en hel tabell i en databas!

<ASP:DataGrid id="MyDataGrid" runat="server" />

Du kopplar upp dig mot din databas, ställer en sql-fråga, lägger mottagen data i ett dataset som du sedan använder för att fylla en datagrid som i exemplet ovan. Ett par rader kod bara. Det bästa av allt är dessutom att du lägger hela datasetet i datorns ramminne, du kan alltså ändra, sortera och göra vad fan som helst i datasetet utan att behöva hämta data från din databas igen! Det går betydligt snabbare och kräver mycket mindre av din server...

Nu har jag nog skrivit alldeles för mycket redan och har du orkat läsa ända hit så är du förmodligen knäppare än jag. :) Kör igång med .net så fort du kan, du kommer inte att behöva slita dit hår oftare än om du arbetar med gamla asp... det lovar jag!

------------------
Jag vill inte ha någon signatur.

[Redigerat av NETwork den 11 dec 2001]

SPiNMedlem sedan mars 20007 896 inlägg
#7
icaaqMedlem sedan okt. 20005 273 inlägg
#8

skojar du att man blir sugen NETwork ;)

det blir att ladda hem frameWorken

------------------
kolung.....det tål att tänkas på!

VideMedlem sedan dec. 19998 577 inlägg
#9

Mycket bra NETwork!

edebro:

Nån som kan visa en liten kodsnutt på hur det ser ut när man arbetar med databaser i .NET(tänkte mest på ASP.NET)

http://www.webeye.nu/default2.asp?que=aspx/default.asp&exec=aspx/artiklar/aspx5.asp

------------------
Mostly Harmless

NETworkMedlem sedan juni 20011 732 inlägg
#10

Jupp, .net framework är väl värt att ladda ned! :)

Trots att det är mer komplex så tycker jag ändå att det är betydligt enklare att arbeta med, exempelvis det här med att alla kontroller är "intelligenta" och kommer ihåg sina egna värden. Alltså att om jag ändrar texten i en textbox så kommer den ihåg den texten tills jag ändrar den igen.

När jag ändå håller på kan jag ju ge er lite fler anledningar:

* C# har en funktion som heter pageload. Här kan du lägga kod som exekveras så fort sidan laddas. Men det finurliga är en liten sats som ser ut så här:

if (!IsPostBack) {}

Här exekverar du kod som BARA körs första gången du går in på sidan. Om du däremot gör en postback (exempelvis trycker på en knapp och kör en funktion) så kommer koden i if-satsen inte att exekveras. Kan användas till mycket kul. :)

* Säg att du ska formatera ett telefonnummer. Skapa ett cs-dokument (c#-dokument) och bygg en funktion som ska returnera ett mobilnummer i rätt format oavsett hur besökarna skriver in det i en textbox. Det bara att anropa funktionen, slänga in strängen som ska omvandlas och returnera den. Återanvänd funktionen på alla dina sidor som behöver den, en rad kod är allt som krävs! Här har jag en liten exempelfunktion som fixar till ett mobilnummer så jag kan köra det mot en sms-tjänst, alltså om du skriver in +46 (0)707 - 450 00 00 som ditt telefonnummer så kommer den att göra om numret till 467075600000.

public static String MobileNumFix(String _MobileNum) {

string MobileNum = _MobileNum;

if (MobileNum.StartsWith("0")){
MobileNum=MobileNum.Remove(0,1);
MobileNum=MobileNum.Insert(0,"46");
}

MobileNum=MobileNum.Replace("+46","");
MobileNum=MobileNum.Replace("(0)","");
MobileNum=MobileNum.Replace(" ","");
MobileNum=MobileNum.Replace("-","");

if (!MobileNum.StartsWith("46"))
MobileNum=MobileNum.Insert(0,"46");

MobileNum=MobileNum.Trim();

return MobileNum;

}

Nu kan jag anropa den här funktionen från vilken sida som helst med EN rad kod!

string MobileNum = MinKlass.MobileNumFix(Phone.Text);

...där Phone.Text är en textbox (med id phone) där besökaren kan fylla i sitt telefonnummer hur de vill och det blir rätt ändå. :)

* Det finns mängder med parametrar som du kan sätta på dina kontroller (exempelvis en textbox, en datagrid, dropdownlist etc...).

<asp:ImageButton
id="MinKnapp" ImageUrl="minbild.jpg" BorderWidth="2px" onclick="MinFunktion"
runat="server"
/>

Här är en ImageButton. En submitknapp som är en bild. Om du vill byta ut dess bild mot en annan när du trycker på den gör du så här:

MinKnapp.ImageUrl = "EnAnnanBild.jpg";

Som ni ser så är det oerhört enkelt att sätta egenskaper på kontroller. OCH DE KOMMER IHÅG sina nya inställningar oavsett du gör nya postbacks till andra funktioner på sidan. :)

Eller varför inte göra knappen osynlig när du tryckt på den en gång?

MinKnapp.Visible = "false";

Svårare än så är det inte... det här kan du även använda på en tabell. Sätt ett id på en vanlig tabell och parametern runat="server" så kan du bolla med den också:

<TABLE id="MinTabell" Runat="server">
</TABLE>

I funktionen:

MinTabell.Visible = "false";

Hela tabellen döljs och allt som finns i den...

Att uforma exempelvis en gästbok eller en nyhetssida är nästan FÖR enkelt. Det finns något som heter datalist. Det är en kontroll som listar exempelvis en tabell i en databas. Du har total kontroll över dess utseende med sk Templates! Det finns ett par olika templates:

<ItemTemplate>

... all kod för varje rad i en tabell, upprepas för varje rad.

</ItemTemplate>

<AlternatingItemTemplate>

Valfri. Om du vill att exempelvis varannan rad ska ha en annan bakgrundsfärg kan du använda denna. Nu kommer Itemtemplate och AlternatingItemtemplate att köras varannan gång... :)

</AlternatingItemTemplate>

<SeparatorTemplate> - kod mellan varje rad.

<SelectedItemTemplate> - om du exempelvis gör en funktion där du kan markera en rad och vill skapa en egen design för en vald kolumn med egna funktioner.

EditItemTemplate - om du ska editera en viss rad.

HeaderTemplate - det som visas högst upp, exempelvis rubriker på kolumnerna!

FooterTemplate - det som visas längst ned.

Om du använder detta för att lista exempelvis en gästbok så har du total kontroll över layouten och funktionaliteten. Du kan självklart använda både vanlig html och asp.net i dessa templates! Hur listar man då en tabell? Jo, det är MYCKET enkelt och smidigt:

<asp:DataList id="DataList1" runat="server"
>

<HeaderTemplate>
Rubriken
</HeaderTemplate>

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

</asp:DataList>

Här kör vi en datalist-control. I den så har vi definierat en Headertemplate (som kommer att hamna högst upp) och en Itemtemplate där jag hämtar "MinData" från en tabell i en databas. Asp.net kommer nu att automatiskt generera en tabell och fylla den med den data jag har hämtat.

Om jag vill att varannan rad ska ha en mörkare bakgrundsfärg så behöver jag bara lägga till:

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

Naturligtvis kan jag även ha html i mina templates:

<ItemTemplate>

<span style="text">Min data:
<%# DataBinder.Eval (Container.DataItem, "MinData") %>
</span>
</ItemTemplate>

Jag kan ven påverka tabellens utformning utan att behöva skapa en egen htmltabell. Allt jag behöver göra är att skicka in lite fler parametrar i min datalist:

<asp:DataList id="DataList1" runat="server"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="Blue"
>

Som ni ser så har jag en alternatingItemStyle här också. Jag behöver alltså inte ens en extra template för att fixa en annan bakgrundsfärg. :)

För att man ska få se min fina tabell så måste man godkänna ett avtal (bestämmer jag) :) därför så skapar jag en:

<asp:CheckBox id=Check1 AutoPostBack="True" OnChecked="MinFunktion" runat="server"/>

Här finns det lite kuligheter. Som ni ser har jag AutoPostBack="true" i den här checkboxen... det betyder att jag postar tillbaka till servern i samma stund som jag markerar den. Ni hittar även OnChecked="MinFunktion" - det betyder att jag startar "MinFunktion" när jag trycker på knappen en gång. Inga sumbmitbuttons här alltså. :)

I MinFunktion kör jag:

MinDatalist.Visible = "true";

Jag kör visible="false" i min Pageload:

PageLoad {
if (!IsPostBack)
MinDatalist.Visible = "false";
}

Nu ser jag inte tabellen förrän jag kryssat i min checkbox. :) Observera att jag måste lägga koden bakom en if (!IsPostBack) för annars kommer den att sätta MinDatalista.Visible="false" varje gång sidan laddas om... nu körs den koden bara första gången när jag kommer in på sidan så när jag väl kryssat i checkboxen så kommer datalisten att vara synlig efter det oavsett hur många postbacks jag gör på sidan.

En annan liten test man kan göra är:

if (MinCheckbox.Checked == "true") {
MinDatalista.Visible = "true";
}

else {
MinDatalista.Visible = "false";

}

Här kan man kolla att den hela tiden är i kryssad, för är den inte det så kör jag else-koden. Lägg den i PageLoad så förstår ni säker hur det fungerar. :)

* Att validera en kontroll är oerhört enkelt! Glöm allt krångel i gamla asp. Du har ett par olika valideringskontroller:

RequiredFieldValidator (kollar så du skriver nåt i exempelvis en textbox), CompareValidator (jämför värdet mellan två kontroller), RangeValidator, RegularExpressionValidator, CustomValidator och ValidationSummary.

Det är riktigt smidigt att få dem att fungera. Kolla här:

Jag gör en textbox:

<asp:textbox id="MinTextbox" runat="server">

På denna kan jag skapa exempelvis en RequiredFieldValidator.

<asp:RequiredFieldValidator id="MinValidator" runat="server"
ControlToValidate="MinTextbox"
ErrorMessage="Textboxen kan inte vara tom!"
Display="Static"
/>

Här anger jag helt enkelt vilken kontroll som ska valideras, i mitt fall "MinTextbox". Om jag försöker posta något utan att skriva något i textboxen så kommer min validator att skriva ut ett meddelande. Observera att detta körs på KLIENTEN, den genererar alltså ett javascript/dhtml till din webbrowser så du postar inte ens tillbaka något till servern innan vilkoren för validatorn är uppfyllda. :D

Men det blir bättre. Om du har en gammal webbläsare som inte klarar java/dhtml så vet asp.net om det och DÅ körs denna kod på servern i alla fall. Med andra ord, detta funkar om du så surfar in med netscape 2.0...

Alla valideringskontroller är i princip lika enkla att förstå. Till och med en regularexpression som normalt är ganska krånglig blir en barnlek:

<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server"
ControlToValidate="MinTextbox"
ValidationExpression="^\d{5}$"
Display="Static"
Font-Name="verdana"
Font-Size="10pt">
Postnumret måste innehålla fem siffror.
</asp:RegularExpressionValidator>

Här kollar vi att du fyller i 5 siffror i textboxen, annars skriver vi ut felmeddelandet "Postnumret måste innehålla fem siffror". Mer kod än så behövs inte!

Sådär, nu vet ni ännu mer om asp.net och hur smart det är.

[Redigerat av NETwork den 12 dec 2001]

NETworkMedlem sedan juni 20011 732 inlägg
#11

Just ja, en liten databaskoppling också... Först inkluderar du rätt namespace.

using System.Data.OleDb;

Sen öppnar du din databas och lägger den i ett dataset:

OleDbConnection myConnection = new OleDbConnection(Application["DB"].ToString());

OleDbDataAdapter myAdapter = new OleDbDataAdapter("SELECT * FROM Tabell", myConnection);

DataSet ds = new DataSet();
myAdapter.Fill(ds, "MinTabell");

Sådär, nu har du fyllt ett dataset och detta kan du seda använda för att lägga upp data, exempelvis i en datagrid eller en datalist (som jag beskrev ovan).

Om du exempelvis vill ta första raden i första kolumnen och lägga den texten i en textbox gör du så här:

MinTextbox.Text = ds.Tables["MinTabell"].Rows[0][0].ToString();

Om du vill ta bort ett antal poster i ditt dataset (OBS inte i din databas!!!) så är det hur enkelt som helst. Jag väljer att ta bort flera rader med hjälp av en for-sats:

for (int i=10;i<ds.Tables["MinTabell"].Rows.Count;i++){
ds.Tables["MinTabell"].Rows.Delete();
}

Här tar du bort alla poster som i tabellen (i DATASETET!) med start på rad 10 och fram till tabellens sista rad... Du kan alltså bolla med din data utan att behöva ställa frågor till databasen hela tiden. Arbeta bara mot ditt dataset!

Ok, hur fyller man då en datalist (alltså den asp.net-kontrollen som ska visa din data). Jo, det är enkelt, så här gör man:

DataView dv = ds.Table["MinTabell"].DefaultView;
MinDatalist.DataSource = dv;
MinDatalist.DataBind();

Du gör en DataView (dv), fyller din datalist med den och databinder den. Färdigt. Nu kan du sedan presentera din data med hjälp av olika inparametrar i din DataList! Ingen html-kodning behövs, allt genereras automatiskt till klienten som anropar sidan... ja, den genererar ju tom olika kod beroende på vilken läsare du använder. :)

------------------
Jag vill inte ha någon signatur.

[Redigerat av NETwork den 12 dec 2001]

edebroMedlem sedan aug. 2001261 inlägg
#12

jävligt bra introduktion NETwork
Man blev riktigt peppad på att börja.
Det är ju bra att man hakar på tekniken så här pass tidigt(??)
För jag tycker alltid det är så att så fort man har lärt sig nåt så är det inaktuellt, t ex ASP ;)

Det blir helt klart .NET
Det är ju också helt suveränt att man kan använda C# till både webben och fristående program.

------------------
Mikael Edebro
http://divx.edebro.net

Mika3lMedlem sedan nov. 20018 492 inlägg
#13

Tack för alla kodexempel NETwork!
Men jag ska använda VB.NET ;)
Ett tag iallafall, man använder VB.NET i boken jag vill ha(Lär dig ASP.NET på 3 veckor), vill så gärna ha den! Men den kommer inte ut förrens efter nyår :p

Tack ändå!

Det är ju bra att man hakar på tekniken så här pass tidigt(??)

Jo det stämmer, då är det ju lite större chans att bli mer profisionell(om man läser tillräckligt mycked d.v.s) :)
Man får ju lite mer erfarenhet också är det bra att känna till språket från "barndomen", då vet man lite mer om det och dess utveckling.

/Mika3l

------------------
Laddar... ;-)

295 ms totalt · 3 externa anrop · v20260731065814-full.c74b5be1
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
291 ms — hämta tråd, inlägg och bilagor (db)