ошибка: Свойство Connection не было инициализировано

#c# #asp.net #database

#c# #asp.net #База данных

Вопрос:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        System.Data.OleDb.OleDbConnection con;
        DataSet ds1;
        System.Data.OleDb.OleDbDataAdapter da;

        int MaxRows = 0;
        int inc = 0;

        private void Form1_Load(object sender, EventArgs e)
        {
            con = new System.Data.OleDb.OleDbConnection();
            ds1 = new DataSet();

            con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/MyWorkers1.mdb";

            string sql = "SELECT * from tblWorkers";
            da = new System.Data.OleDb.OleDbDataAdapter(sql, con);

            con.Open();
            da.Fill(ds1, "MyWorkers1");
            NavigateRecords();
            MaxRows = ds1.Tables["MyWorkers1"].Rows.Count;
            //MaxRows = ds1.Tables["MyWorkers1"].Rows[inc];
            //MessageBox.Show("Database open");

            con.Close();
            //MessageBox.Show("Database close");

            con.Dispose();
        }

        private void NavigateRecords()
        {
            DataRow drow = ds1.Tables["MyWorkers1"].Rows[inc];
            textBox1.Text = drow.ItemArray.GetValue(0).ToString();
            textBox2.Text = drow.ItemArray.GetValue(1).ToString();
            textBox3.Text = drow.ItemArray.GetValue(2).ToString();
        }

        private void btnNext_Click(object sender, EventArgs e)
        {
            if (inc != MaxRows - 1)
            {
                inc  ;
                NavigateRecords();
            }
            else
            {
                MessageBox.Show("No More Records");
            }
        }

        private void btnPrevious_Click(object sender, EventArgs e)
        {
            if (inc > 0)
            {
                inc--;
                NavigateRecords();
            }
            else
            {
                MessageBox.Show("First Record");
            }
        }

        private void btnFirst_Click(object sender, EventArgs e)
        {

            if (inc != 0)
            {
                inc = 0;
                NavigateRecords();
            }
        }

        private void btnLast_Click(object sender, EventArgs e)
        {
            if (inc != MaxRows - 1)
            {
                inc = MaxRows - 1;
                NavigateRecords();
            }
        }

        private void btnAddNew_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            System.Data.OleDb.OleDbCommandBuilder cb;
            cb = new System.Data.OleDb.OleDbCommandBuilder(da);

            DataRow drow = ds1.Tables["MyWorkers1"].NewRow();

            drow[0] = textBox1.Text;
            drow[1] = textBox2.Text;
            drow[2] = textBox3.Text;

            ds1.Tables["MyWorkers1"].Rows.Add(drow);

            MaxRows = MaxRows   1;
            inc = MaxRows - 1;

            da.Update(ds1, "MyWorkers1");

            MessageBox.Show("Record / Entry Added");
        }       

    }
}
  

Когда я запускаю это, отображается ошибка типа "Invalid Operation - Exception Unhandled connection property has not been initialized."

Что не так?

Комментарии:

1. Где возникает исключение (т. е. в какой строке).

2. da.Update(ds1, «MyWorkers1»); // в этой строке отображается ошибка // пожалуйста, помогите мне

3. Источник=D:MyWorkers1.mdb вместо источника=D:/MyWorkers1 ?

Ответ №1:

Я не эксперт, но попробую

 con = new System.Data.OleDb.OleDbConnection(you_connection_string);
  

Ответ №2:

Вы можете проверить, является ли ваша строка ConnectionString допустимой или нет, здесь : http://www.connectionstrings.com /

Обратите внимание, что поставщик отличается в зависимости от используемой вами версии .mdb (2007, 2000 …)

Кстати, не хотели бы вы попробовать Source=D:MyWorkers1.mdb вместо Source=D:/MyWorkers1? С «» вместо «/».

Ответ №3:

Я работал над тем же примером и понял, что con.Dispose(); то, что находится в форме Load, не позволяет da.Update(ds1, "MyWorkers1"); обновить запись. Поэтому на данный момент я удалил его, но его лучше переместить в Destroy / Unload etc (я действительно не знаю, какое событие является правильным перед закрытием формы)

Ответ №4:

Исключение очень четкое. Свойство ConnectionString не было «правильно» установлено при попытке вызвать объект Open SqlConnection.

Вы пробовали создать его внутри web.config?

Комментарии:

1. я не использую asp.net // я использую приложение Windows C # 2008 и msaccess