Heyho,
ich habe da mal wieder ein kleines Problemchen das ich nicht lösen kann.
Ich habe eine List<int> mit verschiedenen (keine doppelten) IDs.
Diese gehe ich per
und zurück kommt JSON und das funktioniert auch tadellos.
Nun schreibe ich dann einen Datensatz in meine MySQL Datenbank nur da kommen völlig Random manche Einträge 2,3 oder auch 4 mal
an obwohl das absolut nicht sein kann. Ich habe Haltepunkte gesetzt und es wird jedes mal die richtige ID übergeben nur kommt dann was völlig anderes in
der Datenbank an. Habt ihr ne Idee? Ich such da jetzt schon locker 4 Stunden den Fehler aber egal was ich versuche es will nicht. Es kommt halt auch kein Fehler
sondern es ist einfach so das Random ein paar Einträge doppelt sind und dafür dann sogar andere Fehlen.
Falls ihr noch was braucht sagt bescheid.
Hier mal ein wenig Code:
Spoiler anzeigen
Und hier die addVideoToDatabase Methode:
Spoiler anzeigen
ich habe da mal wieder ein kleines Problemchen das ich nicht lösen kann.
Ich habe eine List<int> mit verschiedenen (keine doppelten) IDs.
Diese gehe ich per
Parallel.ForEach
durch. Nun wird darin dann mit dieser ID ein WebRequest gemacht und zurück kommt JSON und das funktioniert auch tadellos.
Nun schreibe ich dann einen Datensatz in meine MySQL Datenbank nur da kommen völlig Random manche Einträge 2,3 oder auch 4 mal
an obwohl das absolut nicht sein kann. Ich habe Haltepunkte gesetzt und es wird jedes mal die richtige ID übergeben nur kommt dann was völlig anderes in
der Datenbank an. Habt ihr ne Idee? Ich such da jetzt schon locker 4 Stunden den Fehler aber egal was ich versuche es will nicht. Es kommt halt auch kein Fehler
sondern es ist einfach so das Random ein paar Einträge doppelt sind und dafür dann sogar andere Fehlen.
Falls ihr noch was braucht sagt bescheid.
Hier mal ein wenig Code:
C#-Quellcode
- public static WebHelper wHelp = new WebHelper();
- public static dbHelper dataBase = new dbHelper();
- static void Main(string[] args)
- {
- Settings.LoadSettings();
- string json = null;
- bool isSub = false;
- int x = 0;
- //Auskommentiert um erstmal nur mit dem gleichen JSON zu testen.
- //WebHelperResult newVideosResult = new WebHelperResult();
- //newVideosResult = wHelp.makeRequestAsync(Settings.newestVideosURL).Result;
- //if (newVideosResult.status == WebHelperResult.StatusTyp.SERVERERROR) Environment.Exit(0);
- //json = ExtractJson(result.content);
- json = File.ReadAllText("json.json");
- List<int> videos = Parse.ParseNewestVideoJsonToList(json);
- List<int> onlyNewVideos = new List<int>();
- foreach (int videoId in videos)
- {
- bool exists = dataBase.CheckVideoExists(videoId);
- if (exists) continue;
- onlyNewVideos.Add(videoId);
- Console.WriteLine(exists.ToString() + " / " + videoId.ToString());
- }
- Console.WriteLine("Vorsortierung fertig: {0} neue Videos, Enter drücken um Weiter zu machen.", onlyNewVideos.Count.ToString());
- Console.ReadLine();
- Parallel.ForEach(onlyNewVideos, (videoId) =>
- {
- x += 1;
- VideoInfo vDetail = new VideoInfo();
- WebHelperResult result = new WebHelperResult();
- result = wHelp.makeRequestAsync(Settings.baseVideoURL + videoId.ToString()).Result;
- if (result.status == WebHelperResult.StatusTyp.SERVERERROR || result.status == WebHelperResult.StatusTyp.VIDEOERROR) return;
- json = ExtractJson(result.content);
- vDetail = Parse.ParseSingleVideoJsonToVideoInfo(json);
- isSub = dataBase.CheckUserWhitelisted(vDetail.videoUploader);
- dataBase.addVideoToDatabase(vDetail, whitelisted: isSub);
- if (isSub) downloadVideo(vDetail, true);
- });
- Console.WriteLine("Fertig");
- Console.ReadLine();
- }
Und hier die addVideoToDatabase Methode:
C#-Quellcode
- public void addVideoToDatabase(VideoInfo vDetails, bool whitelisted = false, bool download = false)
- {
- int subStatus = 0;
- int downloadStatus = 0;
- if (whitelisted) subStatus = 1;
- if (download) downloadStatus = 1;
- string myInsertQuery = "INSERT INTO " + Settings.mysql_video_table_name + " (`videoId`, `videoUrl`, `videoUploader`, `videoUploadDate`, `videoTitle`, `videoDuration`, `videoCategories`, `watchedStatus`, `subscribedStatus`, `DownloadStatus`) "
- + " VALUES (@videoId, @videoUrl, @videoUploader, FROM_UNIXTIME(@videoUploadDate), @videoTitle, @videoDuration, @videoCategories, @watchedStatus, @subscribedStatus, @DownloadStatus)";
- using (MySqlConnection c = new MySqlConnection(Settings.connectionString))
- {
- c.Open();
- using (MySqlCommand myCommand = new MySqlCommand(myInsertQuery, c))
- {
- myCommand.Prepare();
- myCommand.Parameters.AddWithValue("@videoId", vDetails.videoId);
- myCommand.Parameters.AddWithValue("@videoUrl", vDetails.videoUrl);
- myCommand.Parameters.AddWithValue("@videoUploader", vDetails.videoUploader);
- myCommand.Parameters.AddWithValue("@videoUploadDate", vDetails.videoCreationTimestamp);
- myCommand.Parameters.AddWithValue("@videoTitle", vDetails.videoTitle);
- myCommand.Parameters.AddWithValue("@videoDuration", vDetails.videoDuration);
- myCommand.Parameters.AddWithValue("@videoCategories", vDetails.videoCategories);
- myCommand.Parameters.AddWithValue("@watchedStatus", 0);
- myCommand.Parameters.AddWithValue("@subscribedStatus", subStatus);
- myCommand.Parameters.AddWithValue("@DownloadStatus", downloadStatus);
- myCommand.ExecuteNonQuery();
- //Console.WriteLine("addVideo| ID: {0}", vDetails.videoId.ToString());
- }
- }
- }