Отображать табличные значения SQL Server с помощью jdbc

#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. есть ли способ проверить, подключен ли я к базе данных или нет? я не хочу извлекать значения (на данный момент), я просто хочу проверить, подключен ли он.