PDA

Vollständige Version anzeigen : Textdatei in Datenbank einlesen


Franke9999
07.09.2004, 12:26
Hallo Allerseits !!!

Ich bin nun endlich dabei einen Umstieg von Programmierung VBA zu VB.Net zu wagen und stosse nun an die ersten wirklich elementaren Probleme.
Ich möchte eine Textdatei, welche einen mit Tabulatortrennung geschriebenen Text einlesen und in eine Tabelle (eigens von mir kreiert) schreiben. Leider werde ich aus all den nützlichen Hinweisen über StreamReader oder Ähnliches einfach nicht schlau.
Kann mir jemand vielleicht ein kleines Bsp. zeigen, wie so etwas zu bewerkstelligen ist ???

Danke schonmal vorab.

GernotMelichar
07.09.2004, 19:44
Die String-Metode string.split gibt ein Array aus Zeichenketten
zurück, wobei man das Trennzeichen angeben kann(typ char).
In deinem Fall Tab (unicode 0x0009).

Hilft das weiter?

Franke9999
08.09.2004, 07:30
Nein leider hilft mir das als totaler Anfänger in Net nicht wirklich weiter. Aber vielleicht kannst Du ja ein kleines Beispiel für diese Verwendung geben. Mein Problem diese Daten letztlich in eine SQL-Datenbanktabelle zu transferieren ist damit wohl leider auch noch nicht gelöst.
Wäre also nett, wenn Du mit einem kleinen Bsp. arbeiten könntest. Sowas hilft meist mehr als grosse Erklärungen.
Danke

GernotMelichar
08.09.2004, 22:49
Tut leid das es so lang gedauert hat.
Hir zwei Beispiele:

'Beispiel einlesen der Textdatei und aufsplitten

Dim sr As New StreamReader("c:\TextDatei.txt")
Dim Zeile As String
Dim strTemp, f As String
Dim strSplit() As String
'Separator Tabulator
Dim sepChar As Char = Chr(9)

Do Until Zeile Is Nothing
Zeile = sr.ReadLine()
strSplit = Zeile.Split(sepChar)

For Each f In strSplit
Console.WriteLine(f)
Next

Loop

sr.Close()


Beispiel No.2:


'Einfaches Beispiel zum Einfügen in eine Access Datenbank aus VB.Net


Dim strDatenbankPfad As String = "c:\datenbank.mdb"
Dim strProvider As String = "Microsoft.Jet.OLEDB.4.0"
Dim strConnection As String = "PROVIDER=" & strProvider & _
"; DATA SOURCE=" & strDatenbankPfad


Dim strSQL As String

strSQL = "INSERT INTO Kunde (Name,Nachname,Adresse) VALUES ('Sepp','HanaBichl','Maierbach');"

Dim odbConn As New System.Data.OleDb.OleDbConnection(strConnection)
Dim odbInsert As New System.Data.OleDb.OleDbCommand()

odbInsert.CommandText = strSQL
odbInsert.Connection = odbConn


odbConn.Open()
odbInsert.ExecuteNonQuery()
odbConn.Close()



Fragen dazu?

Meli

Franke9999
09.09.2004, 09:59
Danke das ist ja super. Ich werde dies gleich mal ausprobieren in meinem Projekt. Ich sehe allerdings soweit keine weiteren Verständnisprobleme. Manchmal brauchts halt einen kleinen Denkanstoß.
Danke nochmals

Franke9999
09.09.2004, 10:47
Jetzt habe ich doch noch eine Frage bzgl. der gezeigten Möglichkeiten. Es ist doch sicherlich möglich den oben beschriebenen Code in eine Funktion zu packen und von überall im Programm aufzurufen mit der Übergabe der Variablen als Funktionsparameter, oder ? Soweit komme ich gerade noch, aber ich muss der Funktion ja noch einen Rückgabewert geben. Und genau da scheitern meine bescheideneren Kenntnisse. Vielleicht kannst Du mir noch kurz schreiben, welchen Rückgabewert ich da definieren soll (as object bzw. as connection, oder so ??)

GernotMelichar
09.09.2004, 14:38
Jetzt habe ich doch noch eine Frage bzgl. der gezeigten Möglichkeiten. Es ist doch sicherlich möglich den oben beschriebenen Code in eine Funktion zu packen und von überall im Programm aufzurufen mit der Übergabe der Variablen als Funktionsparameter, oder ? Soweit komme ich gerade noch, aber ich muss der Funktion ja noch einen Rückgabewert geben. Und genau da scheitern meine bescheideneren Kenntnisse. Vielleicht kannst Du mir noch kurz schreiben, welchen Rückgabewert ich da definieren soll (as object bzw. as connection, oder so ??)

Ja, genau.
Achtung: In VB6 und VBA definierst du den Rückgabewert so:

Funktionsname=Wert

In VB.Net gibt es das Schlüsselwort return:

return Wert

z.B.: Gibt ein Connection-Objekt zurück.

public function ConnectToDatabase(Provider as string,Pfad as string) as System.Data.OleDb.OleDbConnection
Dim strConnection As String = "PROVIDER=" & Provider & _
"; DATA SOURCE=" & pfad

Dim odbConn As New System.Data.OleDb.OleDbConnection(strConnection)

return odbConn

end function


Noch eine kleine Anmerkung:

Da VB.Net eine objektorientierte Sprache ist, könntest Du
das ganze auch in ein entsprechende Klasse packen.

Franke9999
09.09.2004, 14:58
Was wäre denn der Vorteil einer solchen Klasse ??? Etwa, dass ich sie bei Verweis auch projektübergreifend nutzen kann ??? Ich habe bereits einige Abschnitte über Klassen gelesen, aber so richtig steig ich da wohl noch nicht durch. Wenn Du eine einfache Erklärung für Klassen und deren Aufruf bzw. Vor- und Nachteile hast, kannst Du ja in einer ruhigeren Minute diese beschreiben.
Danke für die Funktionsmöglichkeit. So ähnlich sah der erste Entwurf von mir auch aus, eben nur ohne Rückgabewert. Dadurch funktionierte die ganze Funktion halt nicht.

Noodles
09.09.2004, 15:14
Mit Klassen werden die Daten eines Programmes gekapselt. Durch gutes Klassendesign erreichst Du (in den meisten Fällen) leicht wartbaren und wiederverwendbaren Code. Desweiteren soll/kann durch einen guten Klassenentwurf die Logik von der GUI getrennt werden. Durch Vererbung und Plymorphie kannst Du eine leistungsfähige Klassenhierarchie aufbauen.

feride_c
12.09.2007, 15:08
Ich möchte eine Textdatei, welche einen mit ";" geschriebenen Text einlesen und in eine Tabelle schreiben. Ich habe eine Query erstellt mit dem INSERT INTO-Befehl. Wie lese ich jetzt die Parameter (@Name) aus?

INSERT INTO ARZT
(Arzt_ID, Name_ARZT, Telefon, Alt, Eintritt, Austritt)
VALUES (@Arzt_ID,@Name_ARZT,@Telefon,@Alt,@Eintritt,@Austritt)

Bitte ein Beispiel

Danke

feride_c
12.09.2007, 16:14
ich habe jetzt die Lösung gefunden.

Aber ich hätte da noch einen Problem.
Ich habe die einzelnen Strings aus der Textdatei in die Array gespeichert.
Wie füge ich jetzt die Array's in die entsprechenden Datenbankfelder?
Bitte um ein Beispiel.

Noodles
12.09.2007, 17:30
http://www.ms-office-forum.net/forum/showthread.php?t=217677

feride_c
17.09.2007, 15:27
Ich komme einfach nicht weiter.
Ich mache eine Eingabe in ein Textbox und will die Daten in einer DataGridView anzeigen.
Wie mache ich es?

Private Sub BtnSuche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSuche.Click
'Dim dtaArztTest As dsArztTableAdapters.ARZTTableAdapter = New dsArztTableAdapters.ARZTTableAdapter()
'dtaArztTest.GetDataByName(TextBoxName.Text)
Dim cn As SqlClient.SqlConnection = New SqlClient.SqlConnection(GetConnectionString())
cn.Open()
Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand("SELECT Arzt_ID AS Arztnummer, Name_ARZT AS Arztname, Austritt AS Austrittsdatum FROM(ARZT) WHERE(Name_ARZT LIKE @Name + '%') ORDER BY Name_ARZT", cn)
cmd.CommandType = CommandType.Text
Dim sqldta As New SqlClient.SqlDataAdapter
Dim dtaset As New DataSet
Dim param As New SqlClient.SqlParameter
sqldta.SelectCommand = cmd
dtaset = New DataSet("dtaset")
'sqldta.Fill(dtaset, "ARZT")
Me.DataGridViewAnzeige.DataMember = "ARZT"
Me.DataGridViewAnzeige.DataSource = dtaset
End Sub

ayoub
09.11.2007, 15:01
Hallo feride_c,

Frage nach deiner Losung von 12.09.2007?

Ich möchte auch eine Textdatei, welche einen mit ";" geschriebenen Text einlesen und in eine Tabelle schreiben. Ich habe eine Query erstellt mit dem INSERT INTO-Befehl. Wie lese ich jetzt die Parameter (@Name) aus?
Bitte kannst mir zeigen, wie du das gemacht hast?
Bitte..
Danke
Ayoub

ayoub
09.11.2007, 15:02
Hallo feride_c,

Ich möchte auch eine Textdatei, welche einen mit ";" geschriebenen Text einlesen und in eine Tabelle schreiben. Ich habe eine Query erstellt mit dem INSERT INTO-Befehl. Wie lese ich jetzt die Parameter (@Name) aus?
Bitte kannst mir zeigen, wie du das gemacht hast?
Bitte..
Danke
Ayoub

ayoub
09.11.2007, 15:17
Hallo,
ich habe noch eine andere Frage und zwar am 08.09.2004
ein tolles Beispiel zum Einfügen einer Textdadei in eine Access Datenbank.

Dim strDatenbankPfad As String = "c:\datenbank.mdb"
Dim strProvider As String = "Microsoft.Jet.OLEDB.4.0"
Dim strConnection As String = "PROVIDER=" & strProvider & _
"; DATA SOURCE=" & strDatenbankPfad


Dim strSQL As String

strSQL = "INSERT INTO Kunde (Name,Nachname,Adresse) VALUES ('Sepp','HanaBichl','Maierbach');"

Dim odbConn As New System.Data.OleDb.OleDbConnection(strConnection)
Dim odbInsert As New System.Data.OleDb.OleDbCommand()

odbInsert.CommandText = strSQL
odbInsert.Connection = odbConn


odbConn.Open()
odbInsert.ExecuteNonQuery()
odbConn.Close()

Ich möchte auch eine Textdatei, die ich in Array zerlegt habe, in SQL Server Datenbank einfügen!
weiß einer wie ich das machen kann bzw. was ich in diesem Beispiel ändern muss? da ich noch einfänger bi in vb bin

Danke, Gruß
ayoub

ayoub
09.11.2007, 15:21
Hallo,
ich habe noch eine andere Frage und zwar am 08.09.2004 hat
ein tolles Beispiel zum Einfügen einer Textdadei in eine Access Datenbank.

Dim strDatenbankPfad As String = "c:\datenbank.mdb"
Dim strProvider As String = "Microsoft.Jet.OLEDB.4.0"
Dim strConnection As String = "PROVIDER=" & strProvider & _
"; DATA SOURCE=" & strDatenbankPfad


Dim strSQL As String

strSQL = "INSERT INTO Kunde (Name,Nachname,Adresse) VALUES ('Sepp','HanaBichl','Maierbach');"

Dim odbConn As New System.Data.OleDb.OleDbConnection(strConnection)
Dim odbInsert As New System.Data.OleDb.OleDbCommand()

odbInsert.CommandText = strSQL
odbInsert.Connection = odbConn


odbConn.Open()
odbInsert.ExecuteNonQuery()
odbConn.Close()

Ich möchte auch eine Textdatei, die ich in Array zerlegt habe, in SQL Server Datenbank einfügen!
weiß einer wie ich das machen kann bzw. was ich in diesem Beispiel ändern muss? da ich noch einfänger bi in vb bin

Danke, Gruß
ayoub