Nano Hash - криптовалюты, майнинг, программирование

Как автоматически увеличить идентификатор в java NetBeans с помощью mysql и вставить текущий год или дату внутри идентификатора

привет всем, я работаю над системой управления студентами и для сохранения информации о студентах в базе данных mysql я использую автоинкремент, но я хочу, чтобы все идентификаторы студента начинались с ST, за которым следует текущий год, а затем число, которое будет увеличиваться автоматически и воспроизводиться в jTextField, который я разработал и назвал jTextFieldstudentid, проблема возникает, когда я запускаю файл, вывод не соответствует тому, что мне нужно, в таблице студентов на mysql dB последний ID = ST2020001, но в jTextField я получаю ST20200012020002 вместо ST2020002, пожалуйста, помогите, я не знаю, что-то не так с моим кодом.

private void StudentAutoID()
     {
         try {
            String sql="SELECT StudentID FROM students ORDER BY StudentID DESC LIMIT 1";       
            PreparedStatement  pst=con.prepareStatement(sql);
            ResultSet rs=pst.executeQuery();
            if(rs.next())
                {
                Date d=new Date();
                int year=d.getYear();
                int currentYear = year+1900;
                String rnno=rs.getString("StudentID");
                int co=rnno.length();
                String txt= rnno.substring(0, 2);
                String num=rnno.substring(2, co);
                int n=Integer.parseInt(num);
                n++;
                String snum=Integer.toString(n);
                String ftxt=txt+currentYear+snum;
                jTextFieldstudentid.setText(ftxt);

                }
            else
                {
                jTextFieldstudentid.setText("ST2020000");
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(rootPane, e);
            }

     }```

  • Не лучшая стратегия для использования такой структуры ID! Простой столбец StudentID типа BIGINT(20) с автоматическим увеличениемNOT NULL) был бы идеальным выбор. Конкретные сведения о каждом студенте затем можно сохранить в других столбцах. 27.12.2020

Ответы:


1

Проблема именно в этой строке:

String num=rnno.substring(2, co);

Ваша подстрока также включает год.

Если вы измените его на:

String num=rnno.substring(6, co);

он будет работать так, как ожидалось.

Но я бы пересмотрела модель. Возможно, было бы лучше сохранить атомные поля для года и числового идентификатора; и на основе этих полей вычислить идентификатор студента в коде Java без вызовов метода подстроки.

27.12.2020
  • На самом деле это сработало, спасибо, Патриция Вегжинович, я выбрал этот метод, чтобы получить некоторую информацию о студенте, просто просмотрев удостоверение личности. 28.12.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..