Как вставить инкрементный первичный ключ и внешний ключ в таблицы Java jframe? - PullRequest
0 голосов
/ 28 августа 2018

Я новичок в Java, и я пытаюсь вставить данные в три таблицы на NetBeans Jframe. Я уже создал данные на MySql

Первая таблица содержит первичный ключ

create table TraineeDetals(
TraineeID smallint unsigned not null auto_increment primary key,
FirstName varchar(100) not null,
MiddleName varchar(100) not null,
LastName varchar(100) not null
)

, а другая таблица имеет внешний ключ

create table CollegeDetails(
collegeName varchar(100) not null,
Specialization varchar(100) not null,
TraineeID smallint unsigned not null,
constraint 'fk_Trainee'
foreign key (TraineeID) references TraineeDetails (TraineeID)
on delete cascade
on update restrict
)

Теперь я хочу вставить данные с помощью jframe, поэтому в коде Java я сделал это

   String url="jdbc:mysql://localhost/mysql";
   String user="root";
   String pass="root";

   private void 
   SaveButtonActionPerformed(java.awt.event.ActionEvent evt) {  

   try{

        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection(url, user, 
        pass);
        String sql="Insert into TraineeDetails 
        (FirstName,MiddleName,LastName)values(?,?,?)";
        PreparedStatement pst =con.prepareStatement(sql);

        pst.setString(1, firstNameTextFiled.getText());
        pst.setString(2, MiddleNameTextField.getText());
        pst.setString(3, LastNameTextField.getText());

        String sql2 = "Insert into CollegeDetails (CollegeName, 
        Specialization,TraineeID)values(?,?,?)";
        PreparedStatement pst2 =con.prepareStatement(sql2);

        pst2.setString(1, CollegeNameTextField.getText());
        pst2.setString(2, SpecializationTextField.getText());
        pst.setString(3, TraineeIDTextField.getText());


        pst.executeUpdate();
        pst2.executeUpdate();


        JOptionPane.showInputDialog(this,"Insert 
        Successfully");

        clearText();

    }
    catch(Exception e)
    {
        JOptionPane.showInputDialog(this,e.getMessage());
    }
    }

Этот код показывает данные только для таблицы TraineeDetails

Все данные должны быть добавлены отсюда, а идентификатор должен быть автоматически увеличен.

All data must be added from here and the id has to be auto increment

После этого администратор может показать данные, которые он добавил сюда. Jframe показывает данные только для таблицы TraineeDetails, как я могу это исправить

jframe shows data only for TraineeDetails table how can I fix it

Пожалуйста, что мне нужно сделать, чтобы вставить автоинкрементный Первичный ключ и внешний ключ и показать данные вместе после их добавления? А как насчет моего кода Java, чего-то не хватает?

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете посмотреть это видео, чтобы лучше понять, как это сделать https://www.youtube.com/watch?v=NC6bY2oJr7s

Вот как вы можете это сделать ...

Сначала создайте класс, давайте назовем его sql.java и импортируем в библиотеку классов вашего проекта

Напишите в нем этот код

import java.sql.PreparedStatment;

public class sql {
public void id_incrementtable() {

int id = 1 ;
PreparedStatment ps = null;
ResultSet rs = null ; 
Conectar db = new Conectar() ;
try {
ps = db.getConnection().prepareStatement("select max(id) from your 
tablename");
rs = ps.executeQuery();
while(rs.next()) (
id = rs.getint(1) + 1 ; 
)
}catch(Exception ex);

System.out.printin("error"+ex.getMessage());


}
finally ( 
try (
ps.close();
rs.close();
db.desconectar() ;
) catch(Exception ex) ( 

)

}

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

// сохранить код кнопки данных, сначала вы определяете sql s = new sql () для чтения из того // класса, который был добавлен в ссылку на класс вашего проекта

sql s = новый sql (); int id = s.id_incrementable ();

// и ваше место ваш оставшийся код здесь ... я думаю, у вас есть идея

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