Avatar billede Syska Mester
15. oktober 2004 - 00:41 Der er 12 kommentarer og
1 løsning

xml import til database

Hey fokes :-P

late here *hehe*

Jeg er ved at lave en Export/Import funktion til mit program.

Jeg har lavet sådan at jeg kan eksportere og importere mit dataset via XML, men hvordan får jeg det smidt ind i database igen, den skal jo på en eller anden måde vide hvor den skal smide de forskellige ting henne af i min database??

Og hvad med Database "Identity", de kan vel forhåbelig over-rules, men bare lige en tanke.

Tror vist det skulle være det hele, og meget forståeligt hvad det er jeg mangler, men ellers må i lige sige til, så skal jeg nok skrive noget mere...

// ouT
Avatar billede Syska Mester
15. oktober 2004 - 01:40 #1
okay, hvis ID som er identity skal ind, skal IDENTITY_INSERT is ON sættes til ON, men hvordan gøres det.

Fandt ud af det ved følgende fejl:
System.Data.SqlClient.SqlException: An explicit value for the identity column in table 'regGroups' can only be specified when a column list is used and IDENTITY_INSERT is ON.
  at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
Avatar billede arne_v Ekspert
15. oktober 2004 - 08:23 #2
Lav en SqlCommand med "SET IDENTITY_INSERT ON" og lave en ExecuteNonQuery !
Avatar billede Syska Mester
15. oktober 2004 - 11:57 #3
ahh, og så bagefter en OFF igen for at aktivere det igen går jeg stærkt ud fra, hvis det er, må du da lige smide et svar.

Men hvad er den nemmeste måde at import på, er der kun 1 ved at bare løbe hele ens DataSet igennem?
Avatar billede arne_v Ekspert
15. oktober 2004 - 11:58 #4
Ja. OFF for at slå det fra igen.
Avatar billede arne_v Ekspert
15. oktober 2004 - 11:58 #5
svar
Avatar billede arne_v Ekspert
15. oktober 2004 - 12:01 #6
Jeg troede faktisk at man kunne gemme hele datasettet i en operation.

Men jeg har aldrig prøvet XML->data set->database.

Men jeg kan da godt prøve at kigge lidt på hvad man kan.
Avatar billede Syska Mester
15. oktober 2004 - 12:08 #7
heheh, nej, men hvis der skal laves en import funktion synes jeg det ville være det bedste/mest praktiske måde at gøre det på, i stedet for at lave en foreach
Avatar billede Syska Mester
15. oktober 2004 - 15:27 #8
Arbejder du på noget eller?
Avatar billede arne_v Ekspert
15. oktober 2004 - 16:17 #9
Ikke lige nu.

Men jeg kommer nok med noget senere i aften.
Avatar billede arne_v Ekspert
15. oktober 2004 - 21:29 #10
Lidt inspiration:

1> SELECT * FROM T1
2> GO
F1          F2
----------- --------------------------------------------------
          1 A
          2 BB
          3 CCC

C:\>type T1.xml
<T1>
  <record>
    <F1>4</F1>
    <F2>DD</F2>
  </record>
  <record>
    <F1>5</F1>
    <F2>E</F2>
  </record>
</T1>

using System;
using System.Data;
using System.Data.SqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        SqlConnection con = new SqlConnection("server=ARNEPC2\\ARNEPC2RUN;Integrated Security=SSPI;database=TestMSDE");
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM T1", con);
        SqlCommandBuilder cb = new SqlCommandBuilder(da);
        da.InsertCommand = cb.GetInsertCommand();
        DataSet ds = new DataSet("T1");
        da.Fill(ds, "record");
        ds.ReadXml(@"C:\T1.xml");
        da.Update(ds, "record");
        con.Close();
    }
}

1> SELECT * FROM T1
2> GO
F1          F2
----------- --------------------------------------------------
          1 A
          2 BB
          3 CCC
          4 DD
          5 E
Avatar billede Syska Mester
15. oktober 2004 - 23:02 #11
jojo, der kan man bare se, det ser jo smart ud, men jeg kan blive nød til at tømme min database først, da det er grupper, og de refferere til hinanden intern i tabelen, men mange tak
Avatar billede Syska Mester
16. oktober 2004 - 00:52 #12
Men kan stadig ikke få det til at virke med at slå SET IDENTITY_INSERT ON i en SqlCommand
Avatar billede arne_v Ekspert
16. oktober 2004 - 00:55 #13
Prøv lige med:

SET IDENTITY_INSERT tabelnavn ON
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