Avatar billede kornfreak Nybegynder
19. april 2002 - 15:21 Der er 14 kommentarer og
3 løsninger

SQL eksempel!

Er der nogen der kan lave et eksempel ligesom dette i C# ?

Gerne dokumentation hvis det er :)

Set Conn = CreateObject("ADODB.Connection")
Conn.Open( "Provider=SQLOLEDB; Data Source=DATASOURCE;Initial Catalog=DB;User ID=USER;Password=PASS;" )

SQL = "SELECT * FROM Tabel"
Set Rs = Conn.Execute( SQL )
Do While Rs.Eof <> True
  Response.Write(Rs("Felt1"))
Rs.MoveNext
Loop
 
Avatar billede medions Nybegynder
19. april 2002 - 15:25 #1
Se om dette kan hjælpe dig.... :

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script Language="c#" runat="server">
  void Page_Load()
  {
    string strConnection = "user id=sa;password=;";
    strConnection += "initial catalog=northwind;data source=mySQLServer;";
    strConnection += "Connect Timeout=30";
    data_src.Text = strConnection;
    SqlConnection objConnection = new SqlConnection(strConnection);
    try
    {
      objConnection.Open();
      con_open.Text="Connection opened successfully.<br />";
      objConnection.Close();
      con_close.Text="Connection closed.<br />";
    }
    catch (Exception e)
    {
      con_open.Text="Connection failed to open.<br />";
      con_close.Text=e.ToString();
    }
  }
</script>
<html>
  <body>
  <h4>Testing the data connection
  <asp:label id="data_src" runat="server"/></h4>
  <asp:label id="con_open" runat="server"/><br />
  <asp:label id="con_close" runat="server"/><br />
  </body>
</html>

//>Rune
Avatar billede nute Nybegynder
19. april 2002 - 15:31 #2
kornfreak >> .NET stiller en rekke muligheter til rådighet for å hive data ut av en database. de mest benyttede muligheter er nok ved å bruke DataSet eller DataReader. Disse to klasser benyttes på bakgrunn av ditt spesifikke behov. Hvis du kun skal hive data ut av basen og liste disse ut, er det smarteste å benytte DataReader'en, da dette er en forward only stream som er rimelig hurtig. DataSet er en del mer langsom, da det benyttes en annen cursor + at det ligger en del innebygget modifiserings mulighet

/nute
Avatar billede jennemaan Nybegynder
19. april 2002 - 15:33 #3
DataSet myDataSet = new DataSet();
SqlConnection myConnection = new SqlConnection("Server=(local);Trusted_Connection=yes;database=DB");
SqlDataAdapter sdaDinTabel = new SqlDataAdapter("Select * From Tabel", myConnection);

try
{
  sdaDinTabel.Fill(myDataSet,"DinTabel");
  foreach (DataRow drMinTabel in myDataSet.Tables["DinTabel"])
  {
    System.Console.WriteLine(drMinTabel["Felt1"].ToString());
  }
}

catch(Exception e)
{
  System.Console.WriteLine(e.ToString());
}

Husk følgende:
using System;
using System.Data;
using System.Data.SqlClient;
/Jennemaan
Avatar billede kornfreak Nybegynder
19. april 2002 - 15:34 #4
medions >> Der var iallefald første del :)

nute >> Ja ..det har jeg også forstået, lidt i stil med java's InputStreamReader ik ?
Avatar billede kornfreak Nybegynder
19. april 2002 - 15:37 #5
jennemaan >> Perfect da :)
Avatar billede nute Nybegynder
19. april 2002 - 15:38 #6
jennemann >> UHA !! hvorfor bruke et DataSet for å hive data ut av basen ??? Den er jo "pisselangsom" i forhold til en DataReader

kornfreak >> yup...

hvis jeg bare skulle hive noen data ut, til utlisting, ville jeg nok ha gjort følgende (sett at jeg legger alt i en fil, noe jeg ikke gjør normalt)

SqlConnection myConnection = new SqlConnection("Server=(local);Trusted_Connection=yes;database=DB");

SqlCommand myCommand = new SqlCommand("SELECT * FROM tabel", myConnection);
SqlDataReader myReader = myCommand.ExecuteReader();

while( myReader.Read() ){
  // skriv ut alle records
}

lenger er den ikke

/nute
Avatar billede jennemaan Nybegynder
19. april 2002 - 15:41 #7
nute >> jaja... ADO.NET indeholder 098546098346346 forskellige klasser...

Ved at bruge DataSet har kornfreak mulighed for at åbne flere recordsets i samme dataset, lave relationer osv.... Mig bekendt er det ikke hurtigere at bruge SQLDataReader direkte, istedet for DataSet ... Det kræver bare ikke så meget kode ;o)

/Jennemaan
Avatar billede kornfreak Nybegynder
19. april 2002 - 15:41 #8
I see....
Avatar billede nute Nybegynder
19. april 2002 - 15:46 #9
jennemann >> 098546098346346 klasser er vel et par i overkant ;)

du har rett i at det ligger "store" muligheter i å benytte DataSet, men DataReader *er* hurtigere ved ren utlistning blandt annet av den grunn at den er forward only. DataSet bygger ovenpå DataReader, det vil si at når man kaller sine DataSet metoder for utlistning, så skal man igjennom et ekstra lag for å komme ned i DataReader'en.

/nute
Avatar billede jennemaan Nybegynder
19. april 2002 - 15:51 #10
nute > ja, ja ok... Lad det nu ikke blive et religionsspørgsmål ;o)

Jeg vil dog stadig hævde at der ikke er nogen performancemæssig forskel på de to fremgangsmåder ;o)

/Jennemaan
Avatar billede jennemaan Nybegynder
19. april 2002 - 15:53 #11
kornfreak > du kan finde masser af lækre eksempler på msdn.microsoft.com

Som sagt så er System.Data.* et meget stort klassebibliotek som giver mulighed for at gøre de samme ting på mange forskellige måder. Jeg vil anbefale at du tager et kig på msdn vedr. ado.net og kigger lidt på nogle af de eksempler der er. -Så finder du hurtigt ud af hvordan du bedst kan lide at arbejde med data ;o)

/Jennemaan
Avatar billede kornfreak Nybegynder
19. april 2002 - 16:00 #12
Det vil jeg gøre .. nute smid lige et svar så kan I lige dele de der points ;)
Avatar billede nute Nybegynder
19. april 2002 - 16:07 #13
jennemaan >> jeg sier ikke du skal høre på meg, men det ville jo være en fordel å lytte til dem som har designet frameworket ;)

Dette er nesten noe du tvinger meg til...

<snip>
The DataReader is an interesting optimization of the ADO.NET model. When a DataReader is used, parts of the ADO.NET model are cut out, providing faster and more efficient data access.
</snip>

hentet fra http://www.aspnextgen.com/tutorials.aspx?tutorialid=87

<snip>
In general, use data commands; to fetch data, use a data reader. Because Web Forms pages and their controls and components are recreated each time the page makes a round trip, it often is not efficient to create and fill a dataset each time, unless you also intend to cache it between round trips
</snip>

hentet fra http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconusingdatacommandversususingdatasets.asp

<snip>
Execute Select commands that return a result you can read directly, rather than loading it into the dataset. To read the results, you use a data reader (OleDbDataReader or SqlDataReader object), which works like a read-only, forward only cursor and that you can bind controls to. This is a useful strategy for reducing memory usage and loading read-only data very quickly
</snip>

Hentet fra http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconintroductiontodatacommandobjectsinvisualstudio.asp

jeg vil heller ikke starte en religionskrig, men sånn som jeg ser det, så er det ikke snakk om grunnlag for krig hvos man bare setter seg inn i litt dokumentasjon og artikler skrevet om emnet...

/nute
Avatar billede nute Nybegynder
19. april 2002 - 16:08 #14
*smider*
Avatar billede jennemaan Nybegynder
19. april 2002 - 16:38 #15
nute > du har ret... Har lige lavet en performancetest hvor jeg bruger hhv. dataset og datareader til at læse et recordset på ca. 1.2 mio records... dataset brugte ca. 5 sek. hvor datareader brugte ca. 1 sek.

Så jeg må vel nok bøje mig ;o)

/Jennemaan
Avatar billede nute Nybegynder
19. april 2002 - 16:49 #16
jennemaan >> jammen ingenting er bedre enn at man blir enige :-) Man skal jo også lære noe hver dag...

/nute
Avatar billede medions Nybegynder
20. april 2002 - 14:47 #17
;-)

Thx 4 Poninz
//>Rune
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
Kurser inden for grundlæggende programmering

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