Datenbank Speichern / Laden
-
Hi,
Ich schreibe gerade eine Programm, was alle Datei-Infos zu einem angegeben Pfad listet und in eine Datenbank schreibt.Nachdem ich das Programm schließe und es erneut Öffne, ist das Datenbankfenster leer, es wäre nett wenn mir jemand dabei helfen könnte einen "LoadDB" button zu coden
Hier der komplette Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void B_Open_Click(object sender, EventArgs e) { OpenDir.ShowDialog(this); TF_Path.Text = OpenDir.SelectedPath; } private void B_BuildIndex_Click(object sender, EventArgs e) { try { getFileMax(TF_Path.Text); getAllFiles(TF_Path.Text); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void getAllFiles(string path) { try { DirectoryInfo di = new DirectoryInfo(path); FileInfo[] fileInfos = di.GetFiles(); foreach (FileInfo fileInfo in fileInfos) { progressBar1.Value++; dirInfoDBDataSet.DirInfo.Rows.Add(fileInfo.Name, fileInfo.Extension, fileInfo.Directory.FullName, fileInfo.LastAccessTime.Date); } string[] dirs = Directory.GetDirectories(path); foreach (string dir in dirs) { getAllFiles(dir); } } catch(UnauthorizedAccessException) { // do nothing } } private void getFileMax(string path) { try { string[] files = Directory.GetFiles(path); string[] dirs = Directory.GetDirectories(path); progressBar1.Maximum += files.Length; foreach (string dir in dirs) { getFileMax(dir); } } catch (UnauthorizedAccessException) { } } private void Form1_Load(object sender, EventArgs e) { dirInfoDBDataSet.DirInfo.DateinameColumn.MaxLength = -1; dirInfoDBDataSet.DirInfo.DateiendungColumn.MaxLength = -1; dirInfoDBDataSet.DirInfo.DateipfadColumn.MaxLength = -1; } private void lv_ColumnClick(object sender, ColumnClickEventArgs e) { } private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) { } private void dirInfoBindingNavigatorSaveItem_Click(object sender, EventArgs e) { this.Validate(); this.dirInfoBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.dirInfoDBDataSet); } private void dirInfoDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void B_Save_Click(object sender, EventArgs e) { tableAdapterManager.UpdateAll(dirInfoDBDataSet); } private void B_LoadDB_Click(object sender, EventArgs e) { } } }
Ich würde mich über schnelle Hilfe freuen
mfg Zuluhutu
-
Sinnvoll wäre:
* DB-Verbindung erstellen (und öffnen)
* DataAdapter der DirInfo-Tabelle erstellen
* mit dem Adapter dirInfoDBDataSet.DirInfo befüllen
* Verbindung schließen.Was hast du für ein Treiber?
Ist da der Code fürs Befüllen nicht schon mit dabei?
-
1.* DB-Verbindung erstellen (und öffnen)
Wie Öffne ich eine Verbindung?
Könntest du mir ein einfaches Beispiel schreiben?2.* mit dem Adapter dirInfoDBDataSet.DirInfo befüllen
Mache ich das nicht mit den folgenden zeilen?dirInfoDBDataSet.DirInfo.Rows.Add(fileInfo.Name, fileInfo.Extension, fileInfo.Directory.FullName, fileInfo.LastAccessTime.Date);
3.* Verbindung schließen.
Wie schließe ich die geöffnete Verbindung wieder?mfg Zuluhutu
-
witte schrieb:
Was hast du für ein Treiber?
Ist da der Code fürs Befüllen nicht schon mit dabei?zu 2. da werden die Dirinfo-Werte in die Tabelle des Datasets eingefügt. Du brauchst doch aber die andere Richtung Daten aus DB -> Dataset.
-
Treiber:
Ich habe Microsoft Sql Server 2005 installiert-> Rechtsklick aufs Projekt-> Neues Element hinzufügen->Datenbank Dienst
Dann die Datenbank soweit eingerichtet(Spalten, Datentypen)Ich hoffe das meintest du mit Treiber
mfg Zuluhutu
-
Dann müsste im Namensraum dirInfoDBDataSetTableAdapters ein DirInfoTableAdapter existieren (mal im Objektbrowser suchen). Der hat eine Methode GetData() was dir eine DataTable zurückgibt. Alternativ kannst du auch mit Fill() die tabelle in deinem Datatset befüllen.
-
Habe es mit der Methode Fill() gelöst
Danke an witte!mfg Zuluhutu