Member 14630006 Ответов: 1

Как отобразить второе или третье имя из базы данных access в метки


я сделал так, чтобы он отображал имя из базы данных на этикетке, но он показывал только первое имя, и у меня есть более одного имени, как отобразить их все или отобразить второе имя

Что я уже пробовал:

string connectString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:/ALL/Database311.mdb";

   OleDbConnection cn = new OleDbConnection(connectString);
   cn.Open();

   string selectString = "SELECT [name],[age], uu FROM tabel22";
   OleDbCommand cmd = new OleDbCommand(selectString, cn);
   OleDbDataReader reader = cmd.ExecuteReader();

       if (reader.Read()){

           label1.Text = reader.GetString(reader.GetOrdinal("name"));
           label5.Text = reader.GetString(reader.GetOrdinal("uu"));
           label6.Text = reader.GetString(reader.GetOrdinal("age"));

       }


   cn.Close();

1 Ответов

Рейтинг:
0

Richard MacCutchan

Боюсь, что ваш код немного запутан. Вы не должны использовать текстовые поля для внутренних строк так, как вы это делаете. Кроме того, возможно, что значения, которые вы используете в вызовах GetOrdinal, не вернет никаких разумных данных.

А использование конкатенации строк таким образом делает вас уязвимым для SQL-инъекций и потери всех ваших данных.

Поэтому начните с использования строковых переменных для строки подключения и выберите оператор.
Что-то вроде:

    string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:/ALL/Database311.mdb";
    string strCommand = "SELECT name, age, uu FROM tabel22"

    OleDbConnection cn = new OleDbConnection(strConnection);
    cn.Open();

    OleDbCommand cmd = new OleDbCommand(strCommand, cn);

    OleDbDataReader reader = cmd.ExecuteReader();
    if (reader.Read())
    {
        label1.Text =reader.GetString(reader.GetOrdinal("name"));
        label5.Text = reader.GetString(reader.GetOrdinal("uu"));
        label6.Text = reader.GetString(reader.GetOrdinal("age"));
    }

cn.Close();


Member 14630006

я знаю что вы имеете в виду я просто пытаюсь что то сделать с этими текстовыми коробками но я хотел показать второе имя или остальную часть имени в моей базе данных отобразить их на этикетке как это сделать

Richard MacCutchan

Похоже на то, что я показал выше, но это не лучший способ сделать это. Если у вас есть несколько записей в базе данных, то лучше использовать dataadapter, чтобы вы могли привязать результаты к какому-либо элементу управления отображением, например Listview или DataGridView. Видеть И oledbdatareader.Метод GetOrdinal(String) (System.Data.OleDb) | Microsoft Docs[^] для базового использования, а также Заполнение набора данных из DataAdapter | Microsoft Docs[^] для использования DataAdapter.

Member 14630006

я отредактировал код теперь это мой обычный код я хочу отобразить остальную часть имени и возраста и uu потому что теперь он просто показывает первое имя возраст и uu в базе данных

Member 14630006

Дорогой Ричард
я собираюсь объяснить, почему я использую textboxs у меня есть как 100 клиентов каждый из них имеет различную базу данных , и я хочу сделать гениальный проект для него, это о печати карты, так что проект получает имя и возраст из базы данных и публикует на этикетках на моей панели, а затем он печатает панель на карте с информацией, которая мне нужна, но теперь я застрял, что он показывает имя и база данных имеет как 200 имен, как получить все имена и печатать на каждой карте, так что код получает только имя, даже код u post

Richard MacCutchan

Используйте цикл, который считывает каждый возвращенный элемент из OleDbDataReader.