2010-11-09 26 views
0

Je crée un projet simple où je prends "id" et "nom" de l'utilisateur et le stocke dans la base de données Access. Chaque fois que j'appuie sur le bouton Store System.NullReferenceException Error sort. Voici le codeErreur System.NullReferenceException lors du stockage des données dans la base de données Access

Où j'ai déclaré Oledpconnection.

public OleDbConnection Con; 
    public Form1() 
    { 
     InitializeComponent(); 
     string connetionString = null; 
     connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Users/Mujahid/Documents/Visual Studio 2008/Projects/ts/ts/ts.accdb"; 
     OleDbConnection Con = null; 
     Con = new OleDbConnection(connetionString); 

     try 
     { 
      Con.Open(); 
      MessageBox.Show("Connection Open ! "); 
      Con.Close(); 

     } 
     catch (Exception) 
     { 
      MessageBox.Show("Can not open connection ! "); 
     } 

    } 

Et voici le bouton Insérer la programmation

OleDbCommand cmd = new OleDbCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText="insert into ts(ID,Name)" +"Values ('"+textBox1.Text+"','"+textBox2.Text+"')" ; 
     cmd.Connection= Con; 
     Con.Open(); 
     cmd.ExecuteNonQuery(); 
     Con.Close(); 

s'il vous plaît aider !!

+3

À quelle ligne se produit l'exeption? Y a-t-il un objet nul dans cette ligne? – Dialecticus

+2

Si vous utilisez Visual Studio, exécutez le programme en mode débogage (F5) et vérifiez quelle ligne provoque l'erreur. – KBoek

+0

Le code du bouton d'insertion semble incomplet. Où déclarez-vous 'Con' (Il ne semble pas être un champ de la classe' Form1', car il est local dans le constructeur)? L'exception se produit le plus probablement dans la ligne 'Con.Open'. Assurez-vous que l'objet de connexion est valide et correctement initialisé. –

Répondre

3

Con doit être un objet de portée de formulaire, pas redeclare dans le constructeur de formulaires.

public OleDbConnection Con; 
public Form1() 
{ 
    InitializeComponent(); 
    string connetionString = null; 
    connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Users/Mujahid/Documents/Visual Studio 2008/Projects/ts/ts/ts.accdb"; 

    Con = new OleDbConnection(connetionString); 

    try 
    { 
     Con.Open(); 
     MessageBox.Show("Connection Open ! "); 
     Con.Close(); 

    } 
    catch (Exception) 
    { 
     MessageBox.Show("Can not open connection ! "); 
    } 

} 
+0

Erreur Retirer mais une nouvelle erreur n'a été détectée Une exception non gérée du type 'System.Data.OleDb.OleDbException' a eu lieu dans System.Data.dll dans la même ligne ; – Mujahid

+0

Hmmm "Con.Open()" , Je soupçonne que le nom de votre fichier de base de données avec des espaces peut avoir besoin d'être délimité en quelque sorte. Je ne suis pas sûr comment fonctionnent les chaînes de connexion de base de données d'accès, mais vous pouvez essayer ceci: "Fournisseur = Microsoft.Jet.OLEDB.4.0; Source de données = \" C:/Utilisateurs/Mujahid/Documents/Visual Studio 2008/Projets/ts /ts/ts.accdb \ ""; – Kell

+0

Merci Alot ses œuvres comme un charme maintenant. – Mujahid

1
public OleDbConnection Con; 

...

OleDbConnection Con = null; 

INITIALISATION jamais la classe SCOPED instance de connexion.

+0

Je pense que le PO pourrait avoir besoin d'un peu plus d'aide pour comprendre la différence –

+0

Je n'ai pas essayé de changer même erreur. Ok Merci – Mujahid