2017-08-19 5 views
-1

J'essaye de coder "insérer, supprimer, mettre à jour, afficher" les options de SQL avec Ado.Net pour ma mission. Comme je suis encore en train d'apprendre, mon code peut être long. S'il vous plaît vérifier et dites-moi où je fais l'erreur. Le code est à mi-chemin (seulement codé pour insérer).Erreur "Une exception non gérée de type" System.Data.SqlClient.SqlException "s'est produite dans System.Data.dll"

erreur que je reçois est:

enter image description here

mon code est:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Data.SqlClient; 
using System.Data; 

namespace Crud 
{ 
    class Program 
    {  
     static void Main(string[] args) 
     { 
      Console.WriteLine("--What do you want to do?--");    
      Console.WriteLine(" 1. Insert\n 2. Update\n 3. Delete\n 4. Display\n"); 
      int choice=int.Parse(Console.ReadLine()); 
      if (choice == 1) 
      { 
       Console.Write("Enter Student name:"); 
       string SName=Console.ReadLine(); 
       Console.Write("Enter Student Mobile Number:"); 
       string SMob = Console.ReadLine(); 
       Console.Write("Enter student fees:"); 
       string Sfees = Console.ReadLine(); 
       Console.Write("Enter student course:");     
       string course=Console.ReadLine(); 
       SqlConnection con = new SqlConnection("Data Source=Sachin-PC;Initial Catalog=ADOProject;Integrated Security=True"); 
       SqlCommand cmd = new SqlCommand(); 
       cmd.CommandType = CommandType.Text; 
       cmd.CommandText = "insert into focusstudents values(@name,@mobile,@fees,@course)"; 
       cmd.Parameters.AddWithValue("@name",SName); 
       cmd.Parameters.AddWithValue("@mobile",SMob); 
       cmd.Parameters.AddWithValue("@fees", Sfees); 
       cmd.Parameters.AddWithValue("@course", course); 
       cmd.Connection = con; 
       con.Open(); 
       int l = cmd.ExecuteNonQuery(); 
       if (l > 0) 
       { 
        Console.WriteLine("Inserted Successfully"); 
        cmd.CommandText = "select * from focusstudents"; 
        SqlDataAdapter da = new SqlDataAdapter(cmd); 
        DataTable dt = new DataTable(); 
        da.Fill(dt); 
        if (dt.Rows.Count > 0) 
        { 
         foreach (DataRow dr in dt.Rows) 
         { 
          Console.Write("{0}{1}", dr[0], dr[1]); 
         } 
        } 
        else 
        { 
         Console.WriteLine("There is no data to display, add any data to be shown here"); 
        } 
       } 
       con.Close();    
      } 
      Console.ReadKey(); 
     } 
    } 
} 
+1

Au lieu de 'AddWithValue()', ajoutez explicitement avec le type approprié. –

+0

Avez-vous des colonnes supplémentaires dans la table focusstudents? Incompatibilité dans la liste des colonnes. Changez "insert dans focusstudents (column1, column2 ..) valeurs (...)" –

+0

j'ai une colonne de clé primaire comme "id" – sachin

Répondre

0

Avez-vous remarqué les informations supplémentaires dans votre exception? Celui-là est un message d'erreur utile.

Le nom de la colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table.

simple, changer comme votre requête d'insertion ci-dessous:

insert into focusstudents (column1, column2, column3, column4) values(@name,@mobile,@fees,@course) 

Il fonctionnera. Cela garantira que les valeurs de passage sont mappées rapidement. Même si vous ajoutez des colonnes plus tard dans la définition de la table, cela ne sera pas rompu.

Mise à jour: La colonne de clé primaire doit être configurée pour obtenir l'amorçage automatique ou avoir à gérer le code pour obtenir l'ID unique lors de l'insertion.