I am trying to save data to a database on a button push, but the variables seem to be private by the nature of where they are defined. I have tried to move where they are defined, but this seems to produce other errors.
Given a fix, why was it fixed that way?
The code follows.
namespace enable { public partial class Form1 : Form { public Form1() { InitializeComponent(); OleDbConnection favouriteConnection = new System.Data.OleDb.OleDbConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\\\192.168.123.5\\Share\\Matt\\BugTypes.mdb'); string strSQL = 'SELECT CategoryName, Show ' + 'FROM [Categories] WHERE Show = 'Yes' ' + 'ORDER BY CategoryName'; OleDbDataAdapter adapter = new OleDbDataAdapter(strSQL, favouriteConnection); OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(adapter); DataTable dTable = new DataTable(); adapter.Fill(dTable); BindingSource bSource = new BindingSource(); bSource.DataSource = dTable; dataGridView1.DataSource = bSource; adapter.Update(dTable); } private void button1_Click(object sender, EventArgs e) { adapter.Update(dTable);//this is the button that needs to do the save, but can't see the variables. } } }
You’re declaring
dTableandadapterin the constructor, so it goes out of scope as soon as the constructor is completed.You want to move the variable declarations out into the main class, like: