#sql-server #jdbc
#sql-сервер #jdbc
Вопрос:
Ниже приведен мой код для отображения значений SQL Server с использованием jdbc. У меня проблема. он сообщает, что подключен, но не может отобразить значения из указанной таблицы. там написано: недопустимое имя объекта .
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DateServer{
public static void main(String[] argv) throws Exception {
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String user = "abc";
String pass = "def";
Class.forName(driver).newInstance();
Connection con = DriverManager.getConnection("jdbc:sqlserver://<hostname:port;database name>, user, pass);
System.out.println("connected");
Statement st = con.createStatement();
ResultSet res = st.executeQuery("SELECT CommentID FROM Comment");
while (res.next()) {
int i = res.getInt("CommentID");
System.out.println(i);
}
con.close();
}
}
Ниже приведена ошибка:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'Comment'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:611)
at DateServer.main(DateServer.java:19)
Ответ №1:
Comment
это зарезервированное слово, поэтому вам нужно заключить его в кавычки в инструкции select:
st.executeQuery("SELECT CommentID FROM "Comment"");
Комментарии:
1. @ghbhatt: вы уверены, что у вас действительно есть такая таблица? Что произойдет, если вы запустите эту инструкцию в выбранном вами инструменте SQL?
2. Когда я запускаю ее с помощью Visual Studio, я могу видеть значения. Но когда я пытаюсь получить к ней доступ с помощью JDBC, она выдает мне недопустимое имя объекта.
3. @ghbhatt: и вы уверены, что в обоих случаях подключаетесь к одной и той же базе данных?
4. работают ли какие-либо другие таблицы через jdbc? Правильный ли ваш URL-адрес подключения?
5. есть ли способ проверить, подключен ли я к базе данных или нет? я не хочу извлекать значения (на данный момент), я просто хочу проверить, подключен ли он.