错误:连接属性尚未初始化

错误:连接属性尚未初始化

问题描述:

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."错误:连接属性尚未初始化

什么是错的错误?

+0

哪里出现异常(即哪个线)。 – Justin 2011-04-08 06:11:23

+0

da.Update(ds1,“MyWorkers1”); //在这一行错误显示//请帮助我 – premkumar 2011-04-08 11:10:11

+0

Source = D:\ MyWorkers1.mdb而不是Source = D:/ MyWorkers1? – Larry 2011-04-08 11:59:24

我不是专家,但尽量

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

例外的情况是很清楚的。 ConnectionString属性尚未“正确”设置, 尝试调用时打开SqlConnection对象。

您是否尝试过在web.config中创建一个?

+0

我不使用asp.net //我使用Windows应用程序C#2008和msaccess – premkumar 2011-04-08 23:35:56

您可以检查您的ConnectionString是否有效这里:http://www.connectionstrings.com/

注意,供应商不同的是,关于您正在使用的版本的.mdb(2007年,2000 ......)

由方式,你想尝试Source = D:\ MyWorkers1.mdb而不是Source = D:/ MyWorkers1?用“\”代替“/”。

我正在研究相同的例子,并认为con.Dispose();即表单负载不允许da.Update(ds1, "MyWorkers1");更新记录。所以目前我已经把它移走了,但是最好把它移到销毁/卸载等等(我真的不知道在关闭表格之前哪个是正确的事件)