Pourquoi la ligne n'est pas insérée dans la database? C #

Dernière mise à jour

Je pense que j'ai trouvé pourquoi cela se passe. Chaque fois que j'essaie de déboguer mon application, un nouveau file de database est créé par Visual Studio dans le dossier de debugging. Ce file est supprimé lorsque mon application se ferme, de sorte que toutes les modifications que je fais pendant l'exécution sont supprimées. Je ne sais pas comment changer cela, mais je l'afficherai quand je le comprendrai.

**

Edité pour append plus d'informations

**

J'ai créé une class en C # pour gérer les opérations de la database. J'ai une méthode à lire à partir de la database qui fonctionne très bien. Mais quand j'essaie d'insert des lignes, rien ne se passe. Il n'y a pas d'erreur ou d'exception, le code s'exécute comme il est censé, atteint l'instruction "return true", mais quand je vérifie la DB après, je n'ai pas de nouveldatatables. La database est vide maintenant, donc il n'y a aucun conflit avec des champs uniques. Le champ id n'est pas généré automatiquement, donc ce n'est pas le problème non plus.

Voici le code:

public bool saveCity(City c) { ssortingng query = "INSERT INTO [dbo].[cities] ([Id], [Name], [Latitude], [Longitude], [Radius], [LastUpdate])" + " VALUES (@Id, @Name, @Latitude, @Longitude, @Radius, @LastUpdate);"; try { using (SqlConnection conn = new SqlConnection(connSsortingng)) { using (SqlCommand cmd = new SqlCommand(query, conn)) { conn.Open(); cmd.Parameters.AddWithValue("@Id", c.Id); cmd.Parameters.AddWithValue("@Name", c.Name); cmd.Parameters.AddWithValue("@Latitude", c.Latitude); cmd.Parameters.AddWithValue("@Longitude", c.Longitude); cmd.Parameters.AddWithValue("@Radius", c.Radius); cmd.Parameters.AddWithValue("@LastUpdate", c.Update); if (cmd.ExecuteNonQuery() > 0) { return true; } else { return false; } } } } catch (Exception) { return false; } } 

Le connSsortingng est défini comme un champ de class:

 connSsortingng = Properties.Settings.Default.DBConnectionSsortingng; 

Je n'ai aucun triggersur dans ma database, ou rien qui pourrait supprimer mes rangées après insertion. Pour le moment, il n'y a qu'une seule table, les villes, qui ressemble à ceci:

Capture d'écran DB

Le code de la class City:

 class City { public int Id; public ssortingng Name; public int Radius; public double Latitude; public double Longitude; public DateTime Update; public City() { Id = -1; Name = ""; Radius = 0; Latitude = 0; Longitude = 0; Update = DateTime.Now; } } 

C'est la première fois que je travaille avec des connections C # DB, donc il y a probablement quelque chose de vraiment évident et stupide qui me manque, mais ça me rend fou.

Finalement, j'ai trouvé la solution. Visual Studio crée une nouvelle instance de la database chaque fois que vous essayez de déboguer. Quelqu'un a posté une solution de contournement pour ce problème, alors voici le lien:

Puis-je valider des modifications dans la database réelle lors du debugging de C # dans Visual Studio?

Incluez le type de données et un point d'interrogation au lieu de @ devant les noms de parameters. par exemple:

ssortingng query = @"INSERT INTO cities (Id, name, coord_x, coord_y, radius, updated_at)" + " VALUES (?id, ?name, ?lat, ?lng, ?rad, ?update)";

  cmd.Parameters.Add("?id", MySqlDbType.Int32).Value = c.Id 

etc..

J'espère que cela t'aides

Changez le double en decimal , spécifiez le type de DB dans Parameters.Add et remplacez la syntaxe INSERT INTO ... VALUES (@id,...) par INSERT INTO ... SELECT @id,... Peut-être que l'un d'entre eux est le problème, mais il est préférable de tout changer.