2010-11-09 6 views
0

Я делаю простой проект, в котором я беру «id» и «name» от пользователя и сохраняю его в базе данных Access. Всякий раз, когда я нажимаю кнопку Store, вызывается System.NullReferenceException Error. Вот кодОшибка 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

+2

Если вы используете Visual Studio, запустите программу в режиме отладки (F5) и проверьте, какая строка вызывает ошибку. – KBoek

+0

Код кнопки вставки кажется неполным. Где вы объявляете 'Con' (Это не похоже на поле класса Form1, поскольку оно является локальным в конструкторе)? Исключение чаще всего происходит в строке 'Con.Open'. Убедитесь, что объект соединения действителен и правильно инициализирован. –

ответ

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

Ok Спасибо Ошибка Удалить но новые ошибки Найдено Необработанное исключение типа «System.Data.OleDb.OleDbException» произошло в System.Data.dll в одной и той же линии «Con.Open();» – Mujahid

+0

Хммм , Я подозреваю, что имя вашего файла базы данных с пробелами в нем может быть каким-то образом делит. Я не уверен, как работают строки подключения к базе данных доступа, но вы можете попробовать следующее: «Provider = Microsoft.Jet.OLEDB.4.0; Источник данных = \» C:/Users/Mujahid/Documents/Visual Studio 2008/Projects/ts /ts/ts.accdb \ ""; – Kell

+0

Спасибо, что его работы теперь как очарование. – Mujahid

1
public OleDbConnection Con; 

...

OleDbConnection Con = null; 

Вы никогда не инициализировать класс область действия экземпляра соединения.

+0

Я думаю, что OP может понадобиться немного больше, чтобы понять разницу –

+0

Я пробовал без изменений. – Mujahid

Смежные вопросы