Avatar billede frosty-dk Nybegynder
17. september 2007 - 14:38 Der er 12 kommentarer og
1 løsning

insert i mssql via c#

Hej eksperter,

Håber virkelig i kan hjælpe mig med denne her, rimelig ny i c#!

Jeg har 3 tabeller:
[Time]
TimeID
Time

[Customer]
CustomerID
CustomerName
CustomerAdress
osv...

[Booking]
BookingID
BookingDate
TimeID
CustomerID

Der er lavet relationer osv imellem dem.
Jeg har lavet en "wizard" når man vil booke. Som gør følgende:
-først vælger man dato og tid man vil booke, det er lavet via et calendar og RadioButtonList, så trykker man next.
-Så skriver man personlig information.
-så ser man de informationer man har indtastet og kan gå tilbage og ændre og når man trykker "accepter" skal den:

Først skrive ind i [tid] tabellen så ind i [Customer] tabellen og tilsidst ind i booking tabellen hvor den henter Id'erene fra de to andre tabeller.

det skal laves med en C# sqlconnection, man kan simpelthen ikke gennemskue hvordan jeg skal lave den, nogen der kan komme med et forslag/koden? og hvis der er noget af det overstående som er uforståeligt, så skriv endelig så uddyber jeg.

På forhånd tak,
Thomas Frost
Avatar billede blinklys79 Nybegynder
17. september 2007 - 15:14 #1
Avatar billede kalp Novice
17. september 2007 - 15:40 #2
SqlConnection connection = new SqlConnection("Server=ipELLERnavnPåServer; Database=NavnPåDataBase; UID=Brugernavn; PWD=Password;"  providerName="System.Data.SqlClient");

connection.Open();

så har du en forbindelse.
Avatar billede lasserasch Juniormester
17. september 2007 - 16:02 #3
Jeg ville gøre det således :


//Her Din SQL Connection, som kalp også skriver :

private SqlConnection Conn ( )
    {
    SqlConnection Conn = new SqlConnection("Data Source=localhost; UID=username; PWD=password; Database=dbname");
    Conn.Open();
    return Conn;
    }

      public void SQL_insert(String SQLTEXT)
        {
            try {
                 
               
                  SqlCommand cmd = new SqlCommand(SQLTEXT, Conn());
                if (cmd.Connection != null) 
                cmd.ExecuteNonQuery();
               
                }

            catch { }
        }



Med de 2 kald kan du indsætte i en MSSQLDB fra C#.

/Lasse
Avatar billede frosty-dk Nybegynder
17. september 2007 - 17:19 #4
tak for de hurtige svar,

det er en lokal database som den genere når man laver login, så skal jeg bare lade være med at skrive user og pass eller?

altså med den åbne forbindelse, hvordan siger jeg så den skal skrive følgende og lukke og åbne igen og skrive noget i en anden hvor den også skal hente id'en fra den første?
Avatar billede lasserasch Juniormester
17. september 2007 - 17:55 #5
Så er du jo nødt til at select max id fra den tabel du netop har lavet din insert i.
For at selecte fra en SQLDB skal du ha' fat i en SqlDataReader.

ala dette :

      public SqlDataReader SSDR(String sqltext)
        {         
        SqlCommand cmd = new SqlCommand(sqltext, Conn());
        SqlDataReader RSDR = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        return RSDR;
        }

Denne kan du så kalde ala følgende :

System.Data.SqlClient.SqlDataReader SQDR = SSDR("select MAX(TimeID) AS ID from Time";
While (SQDR.Read()) { String ID = SQDR["ID"].ToString(); }

/Lasse
Avatar billede frosty-dk Nybegynder
17. september 2007 - 18:09 #6
sagde min lære godtnok også men det vil sige at:

      public void SQL_insert(String SQLTEXT)
        {
            try {
               
             
                  SqlCommand cmd = new SqlCommand(SQLTEXT, Conn());
                if (cmd.Connection != null)
                cmd.ExecuteNonQuery();
             
                }

            catch { }
        }

både åbner og lukke en connection og så kan jeg putte:

      public SqlDataReader SSDR(String sqltext)
        {       
        SqlCommand cmd = new SqlCommand(sqltext, Conn());
        SqlDataReader RSDR = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        return RSDR;
        }
under den?

og når jeg skal skrive i den først skal det være i-->  try{ HER }
Avatar billede lasserasch Juniormester
18. september 2007 - 08:29 #7
Nej ikke helt.
Pt. har jeg givet dig 3 funktioner.

1. Conn() - Denne funktion opretter forbindelsen til SQL Serveren.
2. Sql_Insert(String Sqltext) - Denne funktion indsætter noget i en database
3. SSDR(String sqltext) - Denne funktion henter noget ud af en database

Du vil aldrig skulle kalde Conn() selv. Det gør funktion 2 og 3 selv.

Når du altså vil indsætte noget i en SQL database skal du lave et kald til "Sql_insert()"

Og når du vil hente noget ud igen skal du lave et kald til SSDR();

Når du kalder begge funktioner, skal du vedhæfte din SQL sætning som en parameter til kaldet.

Så hvis du f.eks. har en form med en knap, så ville det kodemæssigt se sådan her ud, for at kalde sql_insert() funktionen :

--------------
        private void button1_Click ( object sender, EventArgs e )
        {
            String SqlText = "Insert into Time (time) values (" + DateTime.Now + ")";
            SQL_insert(SqlText);
        }

--------------

Og for at hente noget ud igen ville det se sådan her ud :

--------------
private void button1_Click ( object sender, EventArgs e )
        {
            SqlDataReader SQDR = SSDR("Select * from time");
            while (SQDR.Read())
            {
                MessageBox.Show(SQDR["time"].ToString());
            }
            SQDR.Close();
        }
--------------

Og husk så at tilføje denne linje i toppen : using System.Data.SqlClient;

Så slipper du for at skulle skrive "System.Data.SqlClient.SqlDataReader"
og kan nøjes med kun at skrive "SqlDataReader".

Mvh.
Lasse
Avatar billede frosty-dk Nybegynder
18. september 2007 - 08:43 #8
kan virkelig se at jeg er MEGET ny i det der, men altså du har de der to funktioner nederst, men skal de der 3 funktioner du gav mig først ikke også ind der eller?
Avatar billede lasserasch Juniormester
18. september 2007 - 10:54 #9
Jamen alle er jo startet engang og mange af os har haft begynder spørgsmål. For mit vedkommende mange af slagsen ;-)

Jeg tror måske et eksempel ville hjælpe dig mere til at forstå hvordan tingene virker.

Derfor har jeg lige lavet en lille test applikation, som du kan kigge igennem.
Den kan udføre SQL forespørgelser med både insert, select osv.

I stedet for at tage udgangspunkt i det teoretiske, tror jeg det er bedre at du forsøger at forstå hvordan den applikation virker. Den er meget simpel, så du burde rimelig hurtigt kunne danne dig et indtryk af hvordan man bruger de metoder, som jeg har skrevet i tidligere indlæg.

Koden kan du hente her :

http://www.skare.com/SQLTestApp.zip

Mvh.
Lasse
Avatar billede frosty-dk Nybegynder
18. september 2007 - 11:02 #10
lære også bedst ved at kigge på eksempler, men haft lidt problem med at finde nogle eksempler jeg lige fattede.

men mange tak vil bestemt lige kigge på eksemplet og se opbygningen, smid et svar så får du dine velfortjente points :D
Avatar billede lasserasch Juniormester
18. september 2007 - 11:27 #11
svar :-)
Avatar billede lasserasch Juniormester
18. september 2007 - 11:27 #12
rigtigt svar :-)
Avatar billede frosty-dk Nybegynder
18. september 2007 - 12:26 #13
glemmer også altid at vinge af i svar :P 

tråd lukket!
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