Как получить некоторые данные из таблицы доступа для отображения в текстовом поле в C #? - PullRequest
1 голос
/ 30 сентября 2010

Я пытаюсь получить некоторые данные из таблицы (Access 2007) и отобразить эти данные в текстовом поле в форме Windows в C #, также я хочу обновить с помощью кнопки, но не могу приступить к работе, это мойкод для извлечения данных, но я не могу отобразить в текстовом поле, кто-то может мне помочь?

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Policias.accdb");
        OleDbCommand command = new OleDbCommand();
        command.Connection = con;
        command.CommandText = "SELECT contenido FROM seccion";
        command.CommandType = CommandType.Text;
        con.Open();
        OleDbDataReader dr = command.ExecuteReader();


        while (dr.Read())
        {
            textBox3.Text = dr["cosa"].ToString();

        }

        dr.Close();
        con.Close();

1 Ответ

6 голосов
/ 30 сентября 2010

Ниже я расскажу, как читать данные из файла Access (.accdb), используя OleDbDataReader, и сохранять информацию в элементе управления TextBox. Прежде чем мы углубимся в код, необходимо убедиться, что вы делаете несколько вещей:

  1. Убедитесь, что база данных не открыта в Access (это может вызвать проблемы с доступом к файлу)
  2. Убедитесь, что у вас есть копия базы данных в папках отладки и выпуска (находится в папке 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();

Надеюсь, это поможет вам (и другим)! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...