private void ImportFiles(FileInfo f) { IndexList = new List<int>(); GPXList = new List<GPXDatenSpeicher>(); XmlTextReader xr = new XmlTextReader(f.FullName); #region Reader while (xr.Read()) { if (Zustand == GPX_Zustände.START) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx") { Zustand = GPX_Zustände.GPX; }// ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx") }//ende if (Zustand == GPX_Zustände.START) else if (Zustand == GPX_Zustände.GPX) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "trk") { Zustand = GPX_Zustände.GPX_TRK; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt") { if (xr.HasAttributes) { while (xr.MoveToNextAttribute()) { if (xr.Name == "lat") akt_lat = xr.ReadContentAsDouble(); if (xr.Name == "lon") akt_lon = xr.ReadContentAsDouble(); } } Zustand = GPX_Zustände.GPX_WPT; }// ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt") } // ende else if (Zustand == GPX_Zustände.GPX) else if (Zustand == GPX_Zustände.GPX_TRK) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "name") { Zustand = GPX_Zustände.GPX_TRK_NAME; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkseg") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trk") { Zustand = GPX_Zustände.GPX; } }// ende else if (Zustand == GPX_Zustände.GPX_TRK) else if (Zustand == GPX_Zustände.GPX_WPT) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_WPT_ELE; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "name") { Zustand = GPX_Zustände.GPX_WPT_NAME; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "cmt") { Zustand = GPX_Zustände.GPX_WPT_CMT; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "desc") { Zustand = GPX_Zustände.GPX_WPT_DESC; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "sym") { Zustand = GPX_Zustände.GPX_WPT_SYM; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "wpt") { SQL = "SELECT count(*) FROM tbl_Wegpunkt WHERE Längengrad like '" + akt_lon + "' AND Breitengrad like '" + akt_lat + "' AND Ele like '" + akt_ele + "' AND Name like '" + name + "' AND CMT like '" + cmt + "' AND DESC_Feld like '" + desc + "' AND sym like '" + sym + "'"; m.cmd = new OleDbCommand(SQL, m.con); m.dr = m.cmd.ExecuteReader(); m.dr.Read(); if ((int)m.dr[0] == 0) { SQL = "INSERT INTO tbl_Wegpunkt (Längengrad,Breitengrad,Ele,Name,CMT,DESC_Feld,sym) VALUES ('" + akt_lon + "','" + akt_lat + "','" + akt_ele + "','" + name + "','" + cmt + "','" + desc + "','" + sym + "')"; } m.cmd = new OleDbCommand(SQL, m.con); m.cmd.ExecuteNonQuery(); Zustand = GPX_Zustände.GPX; } } else if (Zustand == GPX_Zustände.GPX_WPT_ELE) { strBuf = xr.ReadContentAsString().Replace('.', ','); akt_ele = double.Parse(strBuf); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_NAME) { name = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_CMT) { cmt = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "cmt") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_DESC) { desc = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "desc") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_SYM) { sym = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "sym") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_TRK_NAME) { Track_Name = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name") { Zustand = GPX_Zustände.GPX_TRK; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkpt") { if (xr.HasAttributes) { // Erst mal ALLE Attribute lesen!! while (xr.MoveToNextAttribute()) { if (xr.Name == "lat") akt_lat = xr.ReadContentAsDouble(); if (xr.Name == "lon") akt_lon = xr.ReadContentAsDouble(); } } Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkseg") { Zustand = GPX_Zustände.GPX_TRK; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "time") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkpt") { GPXList.Add(new GPXDatenSpeicher(akt_lat, akt_lon, akt_Zeit, akt_ele, Track_Name)); Zustand = GPX_Zustände.GPX_TRK_TRKSEG; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME) { akt_Zeit = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "time") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE) { strBuf = xr.ReadContentAsString().Replace('.', ','); akt_ele = double.Parse(strBuf); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT; } } }//ende while (xr.Read()) #endregion strBuf = null; //Noch wegpunkt einlesen einbauen... (keine lust) for (int i = 0; i < GPXList.Count; i++) { if (strBuf != GPXList[i].Name) { IndexList.Add(i); } strBuf = GPXList[i].Name; } for (int iLoop = 0; iLoop < IndexList.Count; iLoop++) { EintragGefunden = false; if (!EintragGefunden) { Min_Index = IndexList[iLoop]; EintragGefunden = CheckDataBase(GPXList[IndexList[iLoop]].Name, Min_Index); if (iLoop == (IndexList.Count - 1)) { Max_Index = GPXList.Count; } else { Max_Index = IndexList[iLoop + 1]; } } else { //MessageBox.Show("Gibbet schon"); } if (!EintragGefunden) { SQL = "Insert Into tbl_track (Track_Name, Track_Name_Import) Values ('" + GPXList[IndexList[iLoop]].Name + "','" + GPXList[IndexList[iLoop]].Name + "')"; m.cmd = new OleDbCommand(SQL, m.con); m.cmd.ExecuteNonQuery(); System.Threading.Thread.Sleep(100); SQL = "Select ID_Track From tbl_track Where Track_Name_Import = '" + GPXList[IndexList[iLoop]].Name + "'"; m.cmd = new OleDbCommand(SQL, m.con); m.dr = m.cmd.ExecuteReader(); m.dr.Read(); ID_Track_var = (int)m.dr[0]; //MessageBox.Show(m.dr[0].ToString()); for (int i = Min_Index; i < Max_Index; i++) { SQL = "Insert Into tbl_Trackpoint (Längengrad,Breitengrad,Zeit,Ele,FS_ID_Track) Values ('" + GPXList[i].Longitude + "','" + GPXList[i].Latitude + "','" + GPXList[i].Zeit + "','" + GPXList[i].Ele + "','" + ID_Track_var + "')"; m.cmd = new OleDbCommand(SQL, m.con); m.cmd.ExecuteNonQuery(); } //MessageBox.Show("is drin" + debug.ToString()); } else { //MessageBox.Show("is schon drin" + debug.ToString()); } } }
private void ImportFiles(FileInfo f) { IndexList = new List <int>(); GPXList = new List <GPXDatenSpeicher>(); XmlTextReader xr = new XmlTextReader(f.FullName); #region Reader while (xr.Read()) { if (Zustand == GPX_Zustände.START) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx") { Zustand = GPX_Zustände.GPX; } // ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx") } //ende if (Zustand == GPX_Zustände.START) else if (Zustand == GPX_Zustände.GPX) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "trk") { Zustand = GPX_Zustände.GPX_TRK; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt") { if (xr.HasAttributes) { while (xr.MoveToNextAttribute()) { if (xr.Name == "lat") { akt_lat = xr.ReadContentAsDouble(); } if (xr.Name == "lon") { akt_lon = xr.ReadContentAsDouble(); } } } Zustand = GPX_Zustände.GPX_WPT; } // ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt") } // ende else if (Zustand == GPX_Zustände.GPX) else if (Zustand == GPX_Zustände.GPX_TRK) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "name") { Zustand = GPX_Zustände.GPX_TRK_NAME; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkseg") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trk") { Zustand = GPX_Zustände.GPX; } }// ende else if (Zustand == GPX_Zustände.GPX_TRK) else if (Zustand == GPX_Zustände.GPX_WPT) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_WPT_ELE; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "name") { Zustand = GPX_Zustände.GPX_WPT_NAME; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "cmt") { Zustand = GPX_Zustände.GPX_WPT_CMT; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "desc") { Zustand = GPX_Zustände.GPX_WPT_DESC; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "sym") { Zustand = GPX_Zustände.GPX_WPT_SYM; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "wpt") { SQL = "SELECT count(*) FROM tbl_Wegpunkt WHERE Längengrad like '" + akt_lon + "' AND Breitengrad like '" + akt_lat + "' AND Ele like '" + akt_ele + "' AND Name like '" + name + "' AND CMT like '" + cmt + "' AND DESC_Feld like '" + desc + "' AND sym like '" + sym + "'"; m.cmd = new OleDbCommand(SQL, m.con); m.dr = m.cmd.ExecuteReader(); m.dr.Read(); if ((int)m.dr[0] == 0) { SQL = "INSERT INTO tbl_Wegpunkt (Längengrad,Breitengrad,Ele,Name,CMT,DESC_Feld,sym) VALUES ('" + akt_lon + "','" + akt_lat + "','" + akt_ele + "','" + name + "','" + cmt + "','" + desc + "','" + sym + "')"; } m.cmd = new OleDbCommand(SQL, m.con); m.cmd.ExecuteNonQuery(); Zustand = GPX_Zustände.GPX; } } else if (Zustand == GPX_Zustände.GPX_WPT_ELE) { strBuf = xr.ReadContentAsString().Replace('.', ','); akt_ele = double.Parse(strBuf); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_NAME) { name = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_CMT) { cmt = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "cmt") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_DESC) { desc = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "desc") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_WPT_SYM) { sym = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "sym") { Zustand = GPX_Zustände.GPX_WPT; } } else if (Zustand == GPX_Zustände.GPX_TRK_NAME) { Track_Name = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name") { Zustand = GPX_Zustände.GPX_TRK; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkpt") { if (xr.HasAttributes) { // Erst mal ALLE Attribute lesen!! while (xr.MoveToNextAttribute()) { if (xr.Name == "lat") { akt_lat = xr.ReadContentAsDouble(); } if (xr.Name == "lon") { akt_lon = xr.ReadContentAsDouble(); } } } Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkseg") { Zustand = GPX_Zustände.GPX_TRK; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT) { if (xr.NodeType == XmlNodeType.Element && xr.Name == "time") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME; } if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE; } if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkpt") { GPXList.Add(new GPXDatenSpeicher(akt_lat, akt_lon, akt_Zeit, akt_ele, Track_Name)); Zustand = GPX_Zustände.GPX_TRK_TRKSEG; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME) { akt_Zeit = xr.ReadContentAsString(); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "time") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT; } } else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE) { strBuf = xr.ReadContentAsString().Replace('.', ','); akt_ele = double.Parse(strBuf); if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele") { Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT; } } }//ende while (xr.Read()) #endregion strBuf = null; //Noch wegpunkt einlesen einbauen... (keine lust) for (int i = 0; i < GPXList.Count; i++) { if (strBuf != GPXList[i].Name) { IndexList.Add(i); } strBuf = GPXList[i].Name; } for (int iLoop = 0; iLoop < IndexList.Count; iLoop++) { EintragGefunden = false; if (!EintragGefunden) { Min_Index = IndexList[iLoop]; EintragGefunden = CheckDataBase(GPXList[IndexList[iLoop]].Name, Min_Index); if (iLoop == (IndexList.Count - 1)) { Max_Index = GPXList.Count; } else { Max_Index = IndexList[iLoop + 1]; } } else { //MessageBox.Show("Gibbet schon"); } if (!EintragGefunden) { SQL = "Insert Into tbl_track (Track_Name, Track_Name_Import) Values ('" + GPXList[IndexList[iLoop]].Name + "','" + GPXList[IndexList[iLoop]].Name + "')"; m.cmd = new OleDbCommand(SQL, m.con); m.cmd.ExecuteNonQuery(); System.Threading.Thread.Sleep(100); SQL = "Select ID_Track From tbl_track Where Track_Name_Import = '" + GPXList[IndexList[iLoop]].Name + "'"; m.cmd = new OleDbCommand(SQL, m.con); m.dr = m.cmd.ExecuteReader(); m.dr.Read(); ID_Track_var = (int)m.dr[0]; //MessageBox.Show(m.dr[0].ToString()); for (int i = Min_Index; i < Max_Index; i++) { SQL = "Insert Into tbl_Trackpoint (Längengrad,Breitengrad,Zeit,Ele,FS_ID_Track) Values ('" + GPXList[i].Longitude + "','" + GPXList[i].Latitude + "','" + GPXList[i].Zeit + "','" + GPXList[i].Ele + "','" + ID_Track_var + "')"; m.cmd = new OleDbCommand(SQL, m.con); m.cmd.ExecuteNonQuery(); } //MessageBox.Show("is drin" + debug.ToString()); } else { //MessageBox.Show("is schon drin" + debug.ToString()); } } }