Avatar billede koppelgaard Praktikant
21. maj 2007 - 22:06 Der er 8 kommentarer og
1 løsning

Håndtering af output fra SQL forespørsel

Jeg har en private lånedatabase.
I denne database er der en liste af kunder.
Lad os antage, at jeg lave en tabel med feltet navn, og feltet adresse. Hvorledes for jeg så lavet en sql-forespørgsel på alle kunder, der feks bor i Fredensgade?
Noget i retning af
sql="select * from kunder where adresse='?? '
og så kan jeg ikke mere.
Og videre :
hvordan håndtere jeg output fra forespørgslen?
Jeg skal formodentlig bruge et recordset til at modtage data.
Og fra recordsætten kan jeg så overføre data til en liste i winform.
Nogen der kan hjælpe ?
Michael


Hvis jeg nu vil have alle kunder der
Avatar billede koppelgaard Praktikant
21. maj 2007 - 22:07 #1
ups, Nederste sætning skulle ikke med
Avatar billede arne_v Ekspert
22. maj 2007 - 02:10 #2
sql="select * from kunder where adresse like 'Fredensgade%'"

måske
Avatar billede koppelgaard Praktikant
22. maj 2007 - 08:59 #3
Okay det ser fornuftigt ud.

Så mangler jeg bare resten.
Forstår du, jeg er særdeles grøn i C#.

Du, eller andre har vel ikke en stump kode, som jeg kan arbejder ud fra.
Jeg fandt dette et andet sted :

SqlConnection SqlConn = new SqlConnection("Data Source=....")
SqlCommand sqlCmd = new SqlCommand();
           
            sqlCmd.CommandText = sql
            sqlCmd.Connection = SqlConn;

            SqlConn.Open();

Derefter kunne følgende måske komme :

string str="";
while(reader.Read())
{
  str + =reader["Name"]+", "+ reader["Adresse"] ;
}
minTextbox.text =str;

Vil det være en fremgangsmåde ???
Nogen der har nogen kloge ord?

Michael
Avatar billede maude Nybegynder
22. maj 2007 - 15:45 #4
// definer ConnectionString

string connStr = "user id=sa;" +      // angives hvis der er password på DB
                "database=minDB";

// lav en connection
SqlConnection con = new SqlConnection(connStr);

string sql;
SqlCommand cmd;
// læs tabellen orders
try
  {  // åbn forbindelse til database
    con.Open();
               
    // konstruér en SQL kommando
    sql = "SELECT avg(Freight) FROM orders";
    cmd = new SqlCommand(sql, (SqlConnection)con);

    object gennemsnit = cmd.ExecuteScalar(); // anvendes når retur er enkelt værdi
    Console.WriteLine("Gennemsnit " + gennemsnit);
  }
catch (Exception ex)
  {
    Console.WriteLine("fejl: " + ex.Message);
  }
finally
  {  // luk forbindelse til databasen
    con.Close();
  }

// læs tabellen Orders
try
  {  // åbn forbindelse til database
    con.Open();

    // konstruér en SQL kommando
    sql = "SELECT Freight FROM Orders";
    cmd = new SqlCommand(sql, (SqlConnection)con);

    // udfør SELECT og skab en reader
    SqlDataReader reader = cmd.ExecuteReader(); // anvendes når flere værdier retur
               
    // læs alle post i resultattabellen
    decimal sum = 0;
    decimal antal = 0;
    while (reader.Read())
      {
          object o = reader["Freight"];
          Decimal d = (Decimal)o;
          sum = sum + d;
          antal++;
      }
      Console.WriteLine("Sum: " + sum);
      Console.WriteLine("\r\nAntal: " + antal);
}
catch (Exception ex)
{

}
finally
{  // luk forbindelse til databasen
    con.Close();
}         


Der findes endnu en command : ExecuteNonQuery() som anvendes når der intet returneres som f.eks. ved insert, update og delete.
Connectionstr. afhænger af hvilken DB du bruger ligeledes for connectiontype. SqlConnection benyttes til SQL-servere OleDbConnection til f.eks. Access-database eller SQL-servere osv.
Avatar billede koppelgaard Praktikant
22. maj 2007 - 15:50 #5
Tak !! det må jeg prøve. det bliver dog nok først i morgen.

Vender tilbage
Avatar billede koppelgaard Praktikant
25. maj 2007 - 08:18 #6
Endnu ikke haft tid. Vender tilbage.
Avatar billede koppelgaard Praktikant
30. maj 2007 - 11:52 #7
Undskyld den lange tid det tog mig at svare

Jeg får en del fejl (ca 20) når jeg paster din kode ind i C#.
Har du selv testet det igennem, eller er det mig der er tosset?


Michael
Avatar billede maude Nybegynder
30. maj 2007 - 14:29 #8
Det er kopieret fra et program der virker. Hvilken DB bruger du?
Avatar billede koppelgaard Praktikant
02. juni 2007 - 13:52 #9
Der var problemet. Jeg havde glemt databasen.
Her er point.
Og undskyld ventetid!!

Michael
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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