Ниже я расскажу, как читать данные из файла Access (.accdb), используя OleDbDataReader, и сохранять информацию в элементе управления TextBox. Прежде чем мы углубимся в код, необходимо убедиться, что вы делаете несколько вещей:
- Убедитесь, что база данных не открыта в Access (это может вызвать проблемы с доступом к файлу)
- Убедитесь, что у вас есть копия базы данных в папках отладки и выпуска (находится в папке bin папки вашего проекта.
Теперь для кода! Я проведу вас через процесс, шаг за шагом:
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=YourDatabase.accdb");
Эта строка кода сообщает вашей программе, как получить доступ к вашей базе данных. Provider сообщает вашей программе тип базы данных, к которой вы будете подключаться, а Data Source сообщает вашей программе, где находится база данных.
OleDbCommand command = connection.CreateCommand();
Эта строка кода создает объект команды, связанный с базой данных, к которой будет подключена ваша программа.
command.CommandText = "SELECT ColumnWithTypeText FROM TableName";
Эта строка кода используется для хранения команды базы данных, которую мы хотим использовать позже. Поскольку все, что нас интересует, - это текст, хранящийся в TableName * ColumnWithTypeText , мы были явными. Если бы мы хотели каждый элемент, из каждого столбца, хранящегося в TableName , мы бы использовали следующую строку:
command.CommandText = "SELECT * FROM TableName";
Для получения дополнительной информации о командах SQL я рекомендую прочитать эту статью . Не все команды работают для баз данных Access, но большинство из них будет.
connection.Open();
Эта строка кода открывает соединение с базой данных.
OleDbDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult);
Эта строка кода создает OleDbDataReader , который будет использовать CommandText , который мы установили ранее. Поскольку мы знаем, что будем отображать эту информацию в текстовом поле, мы можем использовать CommandBehavior.SingleResult , чтобы возвращать один набор информации за раз.
if (reader.HasRows)
{
if (reader.Read())
{
textBox1.Text = reader["ColumnWithTypeText"].ToString();
}
}
else
{
textBox1.Text = "No rows found!";
}
Этот раздел кода проверяет, чтобы DataReader получил информацию из базы данных, а затем сообщает , читает информацию нам, отображая ее в TextBox контроль. Если информация не возвращается в reader , то "Строки не найдены!" отображается в элементе управления TextBox . Поскольку reader.Read () находится в операторе if, он будет читать только один раз, начиная с первого набора данных. В других ситуациях вместо этого может потребоваться цикл while.
reader.Close();
connection.Close();
Наконец, вы закрываете свой ридер и подключаетесь к базе данных.
Все вместе, код выглядит так:
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=YourDatabase.accdb");
OleDbCommand command = connection.CreateCommand();
command.CommandText = "SELECT ColumnWithTypeText FROM TableName";
connection.Open();
OleDbDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult);
if (reader.HasRows)
{
if (reader.Read())
{
textBox1.Text = reader["ColumnWithTypeText"].ToString();
//textBox1.Text = reader.GetString(0);
}
}
else
{
textBox1.Text = "No rows found!";
}
reader.Close();
connection.Close();
Надеюсь, это поможет вам (и другим)! :)