Hej, Det enklaste sättet att stoppa in något i databasen är att använda commandobjektet som du skriverInsert into Accessdatabas
jag sitter och exprimenerar lite med en databas och vb.net. Jag har även en xml fil som jag vill ha överfört till databasen.
Jag kan inte hitta något bra ställe där jag kan läsa mig till hur jag på lättaste sätt kan skriva till databasen. Jag tycker det var så lätt och bra i vb6 men i vb.net verkar det som man får göra en sak väldigt mycket mer omständig.
Vad jag har förstått av det hela kan man fylla en dataset. Man kan i det lägga till en rad och skriva in det. Köra en uppdate på databasen och åter igen fylla datasetet och fortsätta inmattningen.
Det jag är ute efter är följande:
säg att jag har en tabell kund. Kund har två fält. FNamn och ENamn.
Jag vill att man på något lätt sätt (liknade det som i vb6) eller något annat smart hanterande.
com.commandtext="insert into kund (FNamn,ENamn) values (Olle,Jöns)"
com.execute()
Säg att jag har 100 insert som ska göras
insert into kund (FNamn,ENamn) values ('Olle','Jöns')
insert into kund (FNamn,ENamn) values (?,?)
insert into kund (FNamn,ENamn) values (?,?) osv.
Är det en oledbcommandbuilder jag ska använda mig av?
Som jag har uppfattat det kan man på något sätt:
sqlkommand="insert into kund (FNamn,ENamn) values (?,?), insert into kund (FNamn,ENamn) values (?,?)"
Sedan ska man kunna köra en insert på sqlkommand.
Är det någon som kan leda mig i rätt riktning? Skulle vara tacksam för hjälp.
En annan fråga kunde vara, att jag har en xmlfil som jag ska läsa in i databasen. Kan jag på något sätt välja att förnamn och efternamn ska in tabellen kund och fältet FNamn=förnamn osv. Kan man lösa det på något smidigt sätt utan xml schema.
MagnusSv: Insert into Accessdatabas
<code>
connection.open
com.commandtext="insert into kund (FNamn,ENamn) values ('"& strEnamn &"','"& strFnamn &"')"
com.executeNonQuery
connection.close
</code>
DataSet och DataAdapters använder du när du vill jobba med ditt data på klientsidan och inte hela tiden öppna och stänga databaskopplingen.
Skapa en DataAdapter med din SQL-fråga och applicera en commandBuidler så skapas automatiskt update, insert och delete commands. (OBS! Du kan bara använda en rak SQL-fråga utan Joins om du vill automatiskt kunna uppdatera datakällan).
DataAdaptern använder du sedan för att fylla ditt DataSet och för att uppdatera din datakälla.
Om du vill importera en XML-fil till Access eller SQL finns det säkert någon bra genväg (som jag inte känner till), men om det är en enkel XML-struktur som bara innehåller förnamn och efternamn så är det nog lättast att bara läsa in filen, traversera alla noder och stoppa in men oleDbCommand.
Här kommer ett enkelt exempel som är baserat på att XML-filen har följande struktur
<code>
<Adresslista>
<namnrad>
<Fnamn>Kalle</Fnamn>
<Enamn>Karlsson</Enamn>
</namnrad>
<namnrad>
<Fnamn>Sven</Fnamn>
<Enamn>Svensson</Enamn>
</namnrad>
<namnrad>
<Fnamn>Lisa</Fnamn>
<Enamn>Larsson</Enamn>
</namnrad>
</Adresslista>
</code>
<code>
Dim myConn As New OleDb.OleDbConnection("blablablabla")
Dim com As New OleDb.OleDbCommand
com.Connection = myConn
Dim xmlDoc = New Xml.XmlDocument
xmlDoc.Load("c:\myXML.xml")
Dim root As Xml.XmlNode = xmlDoc.DocumentElement
If root.HasChildNodes Then
myConn.Open()
For Each nod As XmlNode In root.ChildNodes
If nod.HasChildNodes Then
Dim nodFnamn As XmlNode = nod.ChildNodes(0)
Dim nodEnamn As XmlNode = nod.ChildNodes(1)
com.CommandText = "insert into kund (FNamn,ENamn) values ('" & nodFnamn.InnerText & "','" & nodEnamn.InnerText & "')"
com.ExecuteNonQuery()
End If
Next
myConn.Close()
End If
</code>
Som sagt - det kanske finns andra lösningar, men detta borde funka.
Lycka till!