Несколько проблем я вижу в вашем вопросе. Ваш код далек от того, что вы планируете делать, и есть много пробелов, которые необходимо заполнить (даже ошибки компиляции). Когда вы обращаетесь за помощью на форум, постарайтесь сформулировать свой вопрос.
Несколько предложений
Создание подключения к базе данных при каждом вызове API не является хорошей практикой. Поскольку это дорогостоящая операция. Вы можете использовать какой-то механизм пула соединений. Есть библиотеки, которые сделают это за вас. См. Этот пост для получения дополнительной информации https://www.baeldung.com/java-connection-pooling.
Использование объединенных данных из 7 таблиц также может вызвать проблемы с производительностью, если эти таблицы станут больше. Вы должны подумать о лучшем дизайне, если вам нужно, чтобы они работали быстро в долгосрочной перспективе. Вы также можете добавить в эти таблицы правильные первичные ключи и индексы и оптимизировать запрос sql, чтобы сделать его быстрым.
Используйте некоторый файл .properties
для хранения учетных данных базы данных.
Здесь я использовал inner join
, чтобы присоединиться к вашим 7 столам.
Обратите внимание, что приведенный ниже код не является полным, поскольку я не могу написать полный код, когда ваш код неполный. Надеюсь, этого будет достаточно, чтобы вы составили представление.
public Connection dbconn() // modified to return connection
{
Connection conn = null;
try
{
String JDBC_Driver = "com.mysql.cj.jdbc.Driver";
Class.forName( JDBC_Driver );
conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/connectiondb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "" );
}
catch( Exception ex )
{
System.out.println( ex );
}
return conn;
}
public void viewMyData( String login_email_addr )
{
String sql = "SELECT * From art_culture ac\n" +
"inner join education ed on ac.email = ed.email\n" +
"inner join fashion_beauty fb on fb.email = ac.email\n" +
"inner join food_travel ft on ft.email = ac.email\n" +
"inner join health_fitness hf on hf.email = ac.email\n" +
"inner join literature lt on lt.email = ac.email\n" +
"inner join nature_wildlife nw on nw.email = ac.email where ac.email = ? ;";
try (Connection con = dbconn();
PreparedStatement ps = con.prepareStatement( sql )) // try with resources will close db resources automatically
{
ps.setString( 1, login_email_addr );
try (ResultSet rs = ps.executeQuery())
{
while(rs.next()){
// get your data here
}
}
}
catch( SQLException e )
{
e.printStackTrace();
}
}
Вы должны прочитать данные, заполнить свой объект данных и вернуть его из этого метода.
Надеюсь, это поможет.