#c# #database #forms #ms-access
#c# #База данных #формы #ms-access
Вопрос:
я создал программу, которая содержит 3 формы. я использовал базу данных Microsoft Access в первой форме, и она отлично работала, вот код, который я использовал.
public partial class newRegisteration : Form
{
private OleDbConnection connection = new OleDbConnection();
public newRegisteration()
{
InitializeComponent();
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersOmarS_000DocumentsVisual Studio 2015ProjectsSchool SystemSchool SystemSchool.accdb;
Persist Security Info=False;";
}
private void button1_Click(object sender, EventArgs e)
{
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "INSERT into School ([Name], [Age], [Grade], [Class]) VALUES('" nameTextBox2.Text "', '" ageTextBox2.Text "', '" gradeTextBox2.Text "', '" classTextBox2.Text "') ";
command.ExecuteNonQuery();
MessageBox.Show("Data Saved");
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error" ex);
Clipboard.SetText(ex.ToString());
}
}
}
теперь во второй форме, когда я перетаскиваю базу данных представления сетки в форму из источника данных, она не работает, хотя она работает с первой формой. и я попытался написать коды для вызова представления сетки для базы данных, но это тоже не сработало, все, что я получаю, это пустые столбцы для базы данных, и на кодовой странице код не написан. и когда я копирую коды и изменяю их в соответствии с новой формой, он получает обработчик непредвиденных ошибок. итак, как я могу это исправить?
как я могу использовать базу данных с одним и тем же подключением более одного раза?
PS: Я попытался выполнить другое подключение к той же базе данных, но это также не сработало.
РЕДАКТИРОВАТЬ: код второй формы
private void CurrentStudents_Load(object sender, EventArgs e)
{
using (OleDbConnection connection2 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersOmarS_000DocumentsVisual Studio 2015ProjectsSchool SystemSchool SystemSchool.accdb;Persist Security Info=False;"))
{
OleDbCommand cmd = new OleDbCommand("Select * from School", connection2);
OleDbDataAdapter olda = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
olda.Fill(dt);
schoolDataGridView.DataSource = dt;
schoolDataGridView.AutoGenerateColumns = true;
}
}
Ответ №1:
Возможно, ваша база данных заблокирована в одной из форм. Вы должны попробовать получить доступ к своему соединению с помощью блока, чтобы вам не нужно было явно закрывать или удалять объект подключения.
using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersOmarS_000DocumentsVisual Studio 2015ProjectsSchool SystemSchool SystemSchool.accdb;Persist Security Info=False;"))
{
connection.Open();
//Your code goes here
}
Комментарии:
1. я использовал этот код для первой формы, и он работал как обычно, но вторая форма все еще имеет проблему на данный момент.
2. извините, что это не сработало в начале, но теперь это сработало так хорошо: D спасибо.