2010-11-09 81 views
0

我正在制作一个简单的项目,我从用户处取得“id”和“name”并将其存储到Access数据库中。每当我按下Store按钮时System.NullReferenceException错误就出来了。这里是代码System.NullReferenceException在Access数据库中存储数据时出错

我在哪里声明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 ! "); 
     } 

    } 

这里是插入按钮编程

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(); 

请帮助!

+3

在什么情况下执行豁免?该行中是否有空对象? – Dialecticus 2010-11-09 09:33:17

+2

如果您使用的是Visual Studio,然后以调试模式(F5)运行该程序并检查哪一行导致错误。 – KBoek 2010-11-09 09:34:42

+0

插入按钮的代码似乎不完整。你在哪里声明'Con'(它似乎不是'Form1'类的字段,因为它在构造函数中是本地的)?最可能的情况发生在'Con.Open'这一行。确保连接对象有效并正确初始化。 – 2010-11-09 09:35:29

回答

3

Con需要是表单构造函数中的表单范围对象,而不是重新声明。

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

确定由于错误删除,但新的错误实测值 类型“System.Data.OleDb.OleDbException”的未处理的异常出现在system.data.dll 在同一行 “Con.Open();” – Mujahid 2010-11-09 09:50:11

+0

嗯,我怀疑你的数据库文件的名称中有空格,可能需要以某种方式进行分隔。我不知道如何访问数据库连接字符串的工作,但你可以试试这个:“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = \”C:/ Users/Mujahid/Documents/Visual Studio 2008/Projects/ts /ts/ts.accdb \ “”; – Kell 2010-11-09 10:15:55

+0

非常感谢现在,它的作品像一种魅力。 – Mujahid 2010-11-09 10:48:07

1
public OleDbConnection Con; 

...

OleDbConnection Con = null; 

你永远不会初始化类范围的连接实例。

+0

我认为OP可能需要更多的帮助来了解差异 – 2010-11-09 09:41:35

+0

我已经尝试过没有更改相同的错误。 – Mujahid 2010-11-09 09:46:58