Member 13752376 Ответов: 1

Как выбрать данные из двух разных баз данных и отобразить их в табличном формате


Я пытаюсь отобразить данные из двух разных баз данных,
database1:обложка > таблица:firmlist
database2:userdata >таблица:admin

Как получить подключение к базе данных для двух разных баз данных?

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

<%
try {


Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/cover", "root", "");

Statement statement = connection.createStatement();

String QueryString = "SELECT (FirmName)FROM cover.dbo.table firmlist UNION SELECT (UserShortName,UserPW) from userdata.dbo.table admin WHERE FirmId=UserId ";;
ResultSet rs = statement.executeQuery(QueryString);
%>


<TABLE id="myTable" cellpadding="15" style="background-color: #b9d9e8;">
<TR>

<TH>Company Name</TH>
<TH>User Name</TH>
<TH>Password</TH>
</TR>
<%
while (rs.next()) {
%>

<TR>
<TD><%=rs.getString(2)%></TD>
<TD><%=rs.getString(3)%></TD>
<TD><%=rs.getString(4)%></TD>
</TR>
<% } %>
<%

rs.close();
statement.close();
connection.close();
} catch (Exception ex) {
%>


<%
out.println(ex);
}
%>
</TABLE>

1 Ответов

Рейтинг:
0

Richard Deeming

Первая проблема:
Ты пытаешься это сделать UNION два набора с разным количеством столбцов. Вы можете только UNION наборы с одинаковым количеством столбцов:
MySQL :: MySQL 5.7 справочное руководство :: 13.2.9.3 синтаксис объединения[^]

Я подозреваю, что ты этого хочешь. JOIN вместо этого столы:
MySQL :: MySQL 5.7 справочное руководство :: 13.2.9.2 синтаксис соединения[^]

Вторая проблема:
Вы указываете имя из трех частей для таблиц - cover.dbo.table и userdata.dbo.table Это синтаксис MS SQL Server, а не MySQL.

SELECT FirmName, UserShornName, UserPW FROM cover.table As firmlist JOIN userdata.table As admin ON admin.UserId = firmlist.FirmId


Третья задача:
Похоже, вы храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]


Member 13752376

Большое вам спасибо, сэр...Я новичок в кодировании
Я заменил свой запрос select вашим запросом, но ошибка возникает как java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

поскольку столбец FirmName взят из таблицы firmlist в базе данных cover,а столбец UsershortName-из таблицы admin В базе данных userdata

Member 13752376

как я могу открыть соединение для 2 разных баз данных в следующем коде:
Соединение = DriverManager.метод getconnection("JDBC-драйвер:сервер MySQL://имя localhost:3306/покрытия", "корень", "");

Richard Deeming

Исключение "класс не найден" не имеет никакого отношения к вашему SQL-запросу!

Попробуйте некоторые из предложений от эта тема[^.