/ Forside/ Teknologi / Udvikling / ASP.Net / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP.Net
#NavnPoint
MatrixRev.. 280
csvendsen 50
Liste records fra Access i ASP.NET MVC
Fra : crha
Vist : 671 gange
150 point
Dato : 03-08-10 16:17

Hej

Jeg sidder og leger med ASP.NET MVC. Jeg er nu kommer dertil hvor jeg gerne vil arbejde med databaser. Databasen jeg har valgt er MS Access, da jeg ikke ønsker at tilkøbe MSSQL til mit webhotel. Jeg har siddet længe og søgt på emnet og har fundet frem til forskellige sider og eksempler, men ingen af dem er præcis hvad jeg skal bruge. Jeg fandt en side med eksempler på hvorledes man kan slette, oprette, redigere og liste records fra en Access database. Disse virker også efter hensigten, med undtagelse af af liste resultaterne. Grunden er, at der bruges en response.write i controlleren, som jeg ikke ønsker. Derimod vil jeg gerne samle alle mine resultater i en liste som jeg skal smide over til mit view, men hvordan det er muligt, kan jeg ikke finde ud af.

Jeg synes igen og igen at datatabeller kommer frem, men jeg forstår ikke helt hvordan jeg til dem kan lave min egen query. Jeg fulgte et eksempel på disse, som jeg kunne sende videre til mit view - dog uden held.

Hvis overstående er forståeligt, ville det være rigtig rart, hvis der findes en eller flere derude, som kan hjælpe mig på vej.

I korte træk: Jeg ønsker at hente noget data ud af min Access database, som sendes til view, hvorfra jeg kan sætte det op i tabeller osv.

På forhånd tak

Mvh.
Casper

 
 
Kommentar
Fra : spam-free


Dato : 03-08-10 19:19

har et hæfte der handler om Access/ 07
hvis det kan bruges så smid en PM
http://www.gratisimage.dk/image-04BF_4C58513D.jpg

Kommentar
Fra : crha


Dato : 03-08-10 21:07

Tak for kommentaren. Det er ikke Access der er problemet, men mere hvordan jeg i ASP.NET MVC kan udtrække data og sende det til mit view. At få forbindelse og udføre andre operationer, end udtræk af data, på databasen, har jeg fundet ud af.

Kommentar
Fra : spam-free


Dato : 03-08-10 21:19

ok. kender ikke til DET, så smutter igen.

men ? hvad mener du med som sendes til view/ måske andre heller ikke lige kender udtrykket
har også hæfter om asp og php.
men de kan sikkert hentes på nettet_ any-how.


Kommentar
Fra : crha


Dato : 03-08-10 21:28

Det er en del af MVC (Model View Control). Jeg henter data fra databasen i control og sender det til view, der sørger for HTML'en og visning af dataen.

Men takker for din kommentar :)

Kommentar
Fra : spam-free


Dato : 03-08-10 22:00

Citat
Jeg ønsker at hente noget data ud af min Access database, som sendes til view, hvorfra jeg kan sætte det op i tabeller osv.

ØK:/ OK
+
Kan du ikke bruge et program til DET/
har set et par stykker, der kan hente data fra databaser og
lave det om/ til så meget andet brugbart/ UDEN brug af lokal SERVER = mySgl
eller hvad det kaldes..

om det så virker på et webhotel? er et godt spørgsmål,
men hvis det virker på en PC = hvorfor så ikke på nettet

skal gerne vende tilbage med programmet, når jeg genser det!!!!

ellers takker jeg af for idag.

DATABASER =

Kommentar
Fra : crha


Dato : 04-08-10 10:46

Tak for dit forslag. Er dog blot noget kode jeg ønsker, som ikke kan være særlig kompliceret. Men da jeg er ny til ASP.NET, er det ikke så ligetil for mig.

Kommentar
Fra : MatrixRevolution


Dato : 08-08-10 22:42

Hej,

Nu har jeg ikke rodet meget med Access, da jeg altid bruger mssql srv,
Du kan lave query på data med SQL-SYNTAX.

F.eks. :

SELECT somecolumn FROM sometable WHERE Author = 'Steven Spielberg'

Resultatet af f.eks. alle bøger med forfatteren Steven King. Den sql-streng kan jo så bruges i en SqlDataAdapter eller whatever.
Men det behøver du ikke engang at tænke så meget over i nogle af de nyere modeller
for udvikling af webforms.

Det afhænger også meget af hvad provider du bruger til at hente dataen på.
Bruger du et DataSet, eller DataReader object eller hvad ? Man kan jo også benytte
Stored Procedures.

Nu har jeg kun lige læst kort om ASP.NET MVC, og kender forløbigt noget til Ajax og Linq.

Hvis du kan skrive nogle flere hint om hvordan du ønsker resultatet skal
fremstå, kan jeg måske hjælpe... Men, måske det også handler om at du skal
forsøge at få noget mere viden om ASP.NET i det hele taget. Det er en meget stor
udviklingsplatform-

jeg kan læse via søgning på Google at MVC er en form for alternativ til almindelige
ASP.NET WebForms, og et standalone framework extension til .Net
Det er jo sådan at der er skrevet mange 3.part klasser i .Net

Men jeg tror de smarte ting går igen. Man kan f.eks. i ASP.NET 2.0 også bruge en
DropDownListe kontrollen til Queries og så få resultatet frem i et GridView....

Prøv at se dette eksempel på min hjemmeside:

http://www.canworld.dk/ASPNET20Overview/DataSource(ControlParameter).aspx

Der kan man angive en Select Parameter - på den datasource der skal binde GridView kontrollen:

<SelectParameters>
<asp:ControlParameter Name="Cat" ControlID="MyDropDownList" PropertyName="SelectedValue" />
</SelectParameters>

I de game versioner af ASP.NET v 1.xxx gør man det på en noget andet måde. Der skal
man ofte sætte datasource property på den kontrol man vil benytte lig med det datasæt,
man har initialiseret og kalde Bind() metoden på dataholder objectet.

Kan ikke lige fremvise kode lige nu, men jeg har noget Access kode i kælderen et sted.

God eftersommer

Kommentar
Fra : crha


Dato : 09-08-10 17:15

Mange tak for din kommentar. Efter min opfattelse fungerer ASP.NET MVC anderledes end webforms. Jeg ønsker ikkee at smide resultatet ind i et GridView eller lignende.

Jeg har læst mig til, at LINQ kun virker til MSSQL. Det lod ellers til at være ret lige til med LINQ. Min provider er Microsoft.Jet.OleDb.4.0.

Problemet er, at jeg ønsker at udtrække de data jeg vil have, f.eks. SELECT navn, email FROM Brugere WHERE alder > 50. Disse data skal findes i min controller, hvorefter jeg vil sende dem til mit view, som står for at vise denne data (altså en løkke der hiver et resultat ud af gangen, som i gode gamle ASP). Jeg fandt noget kode som udskriver resultatet, MEN fra min controller. Ved ikke hvordan det skal sendes til mit view. Koden er:

Kode
string ConnString = Utils.GetConnString();
string SqlString = "Select * From News Where news_id = ?";

using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
{
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("news_id", 3);

conn.Open();

using (OleDbDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Response.Write(reader["news_id"].ToString() + " " + reader["title"].ToString());
}
}
conn.Close();
}

}
return View();


Dette resulterer i, at records udskrives udenfor min masterpage. Men som før skrevet, vil jeg gerne kunne bearbejde mit layout i view-delen.

Håber jeg giver mening :) Må være en af de simpleste databaseoperationer, at hente data ud af databasen.




Kommentar
Fra : MatrixRevolution


Dato : 10-08-10 21:36

Hey !

Jeg har nu set en introvideo, downloadet MVC framework og lige lavet en lille applikation efter denne tutorial:

http://www.asp.net/mvc/tutorials/create-a-movie-database-application-in-15-minutes-with-asp-net-mvc-cs

Jeg må indrømme at jeg er lidt rørt. Det tog mig ikke engang 15 minutter at udvikle applikationen. Det kræver selvfølgelig at man kender alle udtryk code syntax osv. og ikke mindst Visual Studio udviklingsværktøj. Så jeg må helt klart se mere på MVC....

For det første, vedr. den kode du har der... som jo er i en controller klasse, skal du ikke bruge Response.Write. Den skriver det bare ud så, og det er slet ikke meningen i MVC. Det kan du egentlig bare fjerne. Men du behøver faktisk ikke engang kode;
View() Metoden skal vide hvad den skal have med over i Viewet jo fra Controlleren, så umiddelbart skulle man tro at du skulle kode View(reader), men det tror jeg ikke vil virke.

Prøv at se i movie -eksemplet, hvor der modificeres i koden:

Kode
using System.Linq;

using System.Web.Mvc;

using MovieApp.Models;

namespace MovieApp.Controllers

{

public class HomeController : Controller

{

private MoviesDBEntities _db = new MoviesDBEntities();

public ActionResult Index()

{

return View(_db.MovieSet.ToList());

}

}

}


Du kan bare benytte ToList() metoden i View Metoden. Så det bliver faktisk nemmere.. og Visual Studio generere et MovieSet og ikke et DataSet fra db-forbindelsen

Håber dette kan hjælpe. Og tak i øvrigt for at du tog det til debat.

Kommentar
Fra : crha


Dato : 11-08-10 13:04

Hehe, det var da dejligt, at du har fået skiftet bekendskab med MVC. Jeg er godt klar over, at response.write bare udskriver teksten, men er sådan det eksempel jeg fandt er. Tænkte bare at der måske er en let måde at omskrive det, så det virker som jeg ønsker.

Det med entities havde jeg egentlig glemt alt om, men virker det ikke kun med MSSQL, ligesom LINQ?

Ville også gerne undgå at sende unødvendige records til mit view, som den der entity data model lader til at gøre.
Det jeg tænker på, er noget i stil med:

using (OleDbDataReader reader = cmd.ExecuteReader())
{
return View(reader.Read());
}

Ved godt overstående ikke virker, men er mere idéen i, hvad jeg forsøger.

Kommentar
Fra : MatrixRevolution


Dato : 12-08-10 16:24

Det er åbenbart ikke kun i LINQ men også når der modelleres i Databasen.

Måske du kunne tilføje en while sætning til din ide, og validere med HasRows.
Så du også undgår at sende unødvendige records til dit view:

(Dette er også bare "pseudo-kode"). Antaget at du f.eks. indtaster et id i en TextBox.

int intNews_Id = txtNewsIdInput.Text;

using (OleDbDataReader reader = cmd.ExecuteReader())
{
while(Reader.Read()) {

if(intNews_Id == reader["news_id"].toString());

return View();

}

if(!reader.HasRows)

return View("Selected id not found!");

//return View(reader);

}

Hvis den ikke har fat i den række der forspørges, skal den bare returnere ingenting, eller er View
afhængig af hvordan applikatioinen er skuet sammen.

Kommentar
Fra : crha


Dato : 13-08-10 12:32

Jeg har tænkt lidt over, at man kunne oprette en liste, og i den liste smide alt ind, via en løkke, som man får tilbage fra sin query. Dette vil dog være meget grimt, og er slet ikke sikker på det virker. Jeg tænker bare, at der må være en simpel måde at gøre det på - andet giver ikke rigtig mening.

Kan godt være din idé virker, hvis man kun ønsker ét felt i én record, da det bare er at videresende en streng. Men hvis man nu gerne vil have news_id, content og headline, og der er 20 nyheder, bør det da kunne løses super nemt, somehow :P

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407944
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste