Avatar billede denniswiencken Nybegynder
18. august 2010 - 13:05 Der er 26 kommentarer

Database for begyndere

Hej, Jeg har nu luret lidt rundt men er bare blevet mere forvirret.
Jeg begyndte for få dage siden at rode med C# i MVS.
Men før det bliver rigtigt sjovt kræver det at jeg kan bruge en database til fx at lagre informationer og selvfølgelig hive dem ud igen.

Har som sagt kigget lidt rundt og er blot blevet forvirret over om der skal bruges acces SQL eller hvordan og hvorledes.

Så jeg tænkte på om der er nogle der kunne vise mig hvordan man laver en database og kan indsætte data fra en textbox og hive dataen ud så den vises i formen uden brug at det indbyggede gridview eller hvad det hedder.

Et lille side spørgsmål. Jeg fandt en guide over hvordan man brugte de indbyggede funktioner til at skrive til en database men det så ikke ud til at virke hvis jeg fx til have en form til tilføjelse af data og en anden form der viser det, det virkede kun i samme form. Så gætter på man skal have et bestemt stykke kode på hver form der skal bruge databasen?

Håber i kan/vil hjælpe :)
Avatar billede lasserasch Juniormester
18. august 2010 - 23:29 #1
Hej Dennis.

Jeg har lavet et eksempel program til dig som du kan kigge på.
Det skulle være rimelig lige at gå til.

Programmet kan trække data ud fra en SQL database og indsætte data i en tabel eller lign.

Det vil give dig en ide omkring applikationsdesignet i forbindelse med database kommunikation.

Der findes mange andre måder at gøre det på, så det her er bestemt ikke den eneste måde. Men det er da et sted at starte for dig.

Download programmet her:
http://www.r-coding.dk/downloads/eksperten/SQLDatabaseExample.zip

Mvh.
Lasse
Avatar billede denniswiencken Nybegynder
19. august 2010 - 10:02 #2
Super! Dog lige lidt spørgsmål, har forsøgt med min SQL server på localen og kan gætte mig til at i textboxen skal man skrive forspørgelsen? Men det ser ikke ud til at virke der sker ihvertfald ikke så meget, er det mig der skriver forkert eller kan den ikke bruges på localhost?
Avatar billede lasserasch Juniormester
19. august 2010 - 11:22 #3
Tanken er at:

1. Du indtaster servernavn, databasenavn, brugernavn og password og trykker "gem konfiguration".

Herefter kan du skrive SQL forespørgelser i tekstboksen.
F.eks. "select * from tblusers" osv.

Hvis der opstår en fejl af en eller anden slags. f.eks. manglende adgang til SQL serveren, så vil du få vist stacktrace med fejlbeskrivelsen i log boksen.

Det er kun ment som eksempel, så du kan se koden og få en ide omkring hvordan det kan gøres.

Mvh. lasse
Avatar billede denniswiencken Nybegynder
20. august 2010 - 15:08 #4
Kan bare ikke rigtig få det til at virke, den fejler ved forbindelsen hver gang og har prøvet forskellige steder :/
Avatar billede madand Nybegynder
20. august 2010 - 15:17 #5
Er du sikker på du har sat din server rigtig op?
Hvis du bruger Microsoft SQL Server, så burde der køre en process på din pc der hedder sqlservr.exe (dette siger dog ikke noget om opsætningen, men om serveren kører)
Avatar billede denniswiencken Nybegynder
20. august 2010 - 15:21 #6
Så er spørgsmålet, jeg har har MySQL, er det så mon derfor?
Avatar billede lasserasch Juniormester
20. august 2010 - 16:39 #7
Ja det er det... det er en microsoft SQL Server som den forsøger at connecte til.

Du kan downloade gratis versionen her: http://www.microsoft.com/express/Database/

Mvh.
Lasse
Avatar billede lasserasch Juniormester
20. august 2010 - 16:42 #8
Hvis du absolut vil bruge mysql skal du downloade en mysql connector til c# og implementere den i løsningen i stedet for.

http://dev.mysql.com/downloads/connector/net/1.0.html

Mvh.
Lasse
Avatar billede denniswiencken Nybegynder
20. august 2010 - 17:09 #9
Hmm. Tænkte på, hvis jeg så lavede et program og smed på en anden computer, så skal den computer vel have en sql server installeret? kan man undgå det på nogen måde med databaser?
Avatar billede Syska Mester
20. august 2010 - 17:19 #10
Nej, det kan man ikke af gode grunde. Hvis ting du vil forbinde til ikke er der, hvordan vil du så forbinde til dem :-)

Du kan selvfølgelig have en central database og lade alle dine klineter forbinde til samme database.

mvh
Avatar billede arne_v Ekspert
20. august 2010 - 18:38 #11
Hvis man bruger en embedded database behoeves der ikke vaere installeret en database server.

SQLServerCE, SQLite, MS Access, FireBird Embedded etc..
Avatar billede denniswiencken Nybegynder
20. august 2010 - 18:57 #12
arne_v
Hvordan virker det?`Hvis jeg fx skal bruge access
Avatar billede arne_v Ekspert
20. august 2010 - 19:04 #13
Du hare .MDB filen sammen med din app og bruger klasserne i System.Data.OleDb til at tilgaa den.
Avatar billede denniswiencken Nybegynder
20. august 2010 - 19:18 #14
Har læst lidt på det men ikke meget, og kan ikke rigtigt få det til at virke
Avatar billede Syska Mester
20. august 2010 - 19:47 #15
Vis os hvad du har prøvet, så kan vi nemmere hjælpe.

mvh
Avatar billede denniswiencken Nybegynder
20. august 2010 - 19:57 #16
Som sagt startede jeg for få dage siden :), er ret meget begynder, har dog arbejdet med php og databaser før så er ikke helt blank men eller ved jeg ikke det store
Avatar billede Syska Mester
20. august 2010 - 20:08 #17
Hvad du har prøvet at gøre koed mæssigt for at få det til at virke, så kan vi komme med pointers, i stedet for at lave det hele for dig. Det er i hvert fald den måde jeg synes man lærer bedst på.

mvh
Avatar billede denniswiencken Nybegynder
20. august 2010 - 20:13 #18
Jamen har ikke rigtig lavet så meget med oleDB.

Sidder ret meget fast ud over jeg ved man skal bruge system.data.oleDB

så en kode til at connecte og en til at lukke den igen

og selvfølgelig en linje kode til at hente data eller insætte

Men det går galt hver gang, så har ikke noget eksempel, har givet op, discarded og prøvet igen et stykke tid efter
Avatar billede Syska Mester
20. august 2010 - 20:26 #19
Du kan finde connection strings her:
http://connectionstrings.com/access-2007 <- Hvis du bruger access, men der er til flere.

Så skal du faktisk bare ændre i Lasse's kode, så den bruger OleCommand etc. i stedet for SqlCommand.

Derfra burde du kunne køre sql command mod din access database.

mvh
Avatar billede Syska Mester
20. august 2010 - 20:27 #20
Avatar billede arne_v Ekspert
20. august 2010 - 20:42 #21
Et par tilfaeldige eksempler:

using System;
using System.Data.OleDb;

class MainClass
{
    public static void Main(string[] args)
    {
        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Database\\MSAccess\\Test.mdb");
        con.Open();
        OleDbCommand cmd = new OleDbCommand("SELECT * FROM T1", con);
        OleDbDataReader rdr = cmd.ExecuteReader();
        while(rdr.Read()) {
            int f1 = (int)rdr[0];
            string f2 = (string)rdr[1];
            Console.WriteLine(f1 + " " + f2);
        }
        con.Close();
    }
}

og:

using System;
using System.Data;
using System.Data.OleDb;

namespace E
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb;");
            con.Open();
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT f1,f2 FROM t1", con);
            DataSet ds = new DataSet();
            da.Fill(ds, "t1");
            foreach(DataTable dt in ds.Tables)
            {
                Console.WriteLine(dt.TableName + ":");
                foreach(DataRow dr in dt.Rows)
                {
                    foreach(object o in dr.ItemArray)
                    {
                        Console.Write(" " + o);
                    }
                    Console.WriteLine();
                }
            }
            Console.WriteLine(ds.Tables["t1"].Rows[1]["f2"]);
            con.Close();
        }
    }
}
Avatar billede denniswiencken Nybegynder
20. august 2010 - 22:10 #22
Okay jeg er virkelig tard til det kan jeg se :/, jeg bruger visual studio 2010 og windows form applikation.. Er der en der kan vise et direkte eksempel på fx har jeg en database der hedder food.accdb(i tvivl om formatet kan bruges?) i den database er der fx en tabel med navnet food som indeholder name og amount. nu skal jeg trække dataen ud så jeg i min form kan få dataerne i den tabel frem på skærmen, og evt 2 teksfelter hvor man kan tilføje det man skriver til databasen, be om :/
Avatar billede Syska Mester
20. august 2010 - 22:26 #23
Hvad er det for en database ?

Kan du ikke lave en i Access og så bruge den ... sådan for at komme igang.

mvh
Avatar billede denniswiencken Nybegynder
20. august 2010 - 22:44 #24
Har forsøgt men kan ikke finde ud af at hente data fra den til min windows form
Avatar billede lasserasch Juniormester
20. august 2010 - 23:02 #25
Uden at det her er testet, så ville jeg mene at du kan tilføje dette til SQL filen i mit projekt og så referere til de metoder i stedet for fra formen. Det burde virke.


public class Access
    {
        public static System.Data.OleDb.OleDbConnection Conn()
        {
            string Databasefile = "STIEN TIL DIN DATABASEFIL";
            System.Data.OleDb.OleDbConnection AccessConn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Databasefile + ";Persist Security Info=False");
            AccessConn.Open();
            return AccessConn;
        }
        public static int ExecuteNonQuery(string Query)
        {
            try
            {
                System.Data.OleDb.OleDbConnection conn = Conn();
                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(Query, conn);
                int i = cmd.ExecuteNonQuery();
                conn.Close();
                cmd.Dispose();
                conn.Dispose();
                return i;
            }
            catch (Exception Ex)
            {
                throw new Exception("Error processing Command : " + Query, Ex);
            }
        }
        public static System.Data.OleDb.OleDbDataReader AccessDataReader(string Query)
        {

            try
            {
                System.Data.OleDb.OleDbConnection conn = Conn();
                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(Query, conn);
                System.Data.OleDb.OleDbDataReader Sqdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return Sqdr;
            }
            catch (Exception Ex)
            {
                throw new Exception("Access Exception ved udtræk af query '" + Query + "'.", Ex);
            }

        }
    }

Det er ikke testet, men det burde virke fint.

Mvh.
Lasse
Avatar billede denniswiencken Nybegynder
21. august 2010 - 13:03 #26
Tror jeg giver op, det går bare ikke
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