Я пытаюсь подключиться к SQL-серверу с помощью Calcite. пытаясь запустить очень простой пример, чтобы просто вытащить данные из таблицы людей.
Вот код, который я использую Schema:
public static class PersonSchema
{
public final Person[] persons;
public PersonSchema(Person[] persons)
{
this.persons = persons;
}
public PersonSchema(){
persons=null;
}
}
public static class Person {
public final int personId;
public final String firstName;
public final String lastName;
public Person(int personId, String firstName, String lastName) {
this.personId = personId;
this.firstName = firstName;
this.lastName = lastName;
}
}
}
Вот основной код
@Test public void testRealSqlServerData_MI() throws Exception {
Class.forName("org.apache.calcite.jdbc.Driver");
Properties info = new Properties();
info.setProperty("lex", "SQL_SERVER");
info.setProperty("UserName", "USER_XXX");
info.setProperty("Password", "XXXXXXX");
Connection connection = DriverManager.getConnection
("jdbc:calcite://SPG;databaseName=Dept", info);
CalciteConnection calciteConnection =
connection.unwrap(CalciteConnection.class);
SchemaPlus rootSchema = calciteConnection.getRootSchema();
SchemaPlus schema = rootSchema.add("PersonSchema",
new ReflectiveSchema(new PersonSchema()));
Statement statement = calciteConnection.createStatement();
ResultSet resultSet = statement.executeQuery(
"select e.personid, e.firstname, e.lastname \n"
+ "from person_tbl as e\n");
resultSet.close();
statement.close();
connection.close();
}
Настройки сервера sql такие. Сервер - БД SPG - Схема отдела - dbo
Проблемы:
- Я получаю Table not found, поэтому похоже, что он не читает схему.
- Я хотел бы понять создание схемы на кальците, потому что sqls в реальном времени будет сложнее со многими соединениями.
- Как лучше всего подключиться к sql server. Выше кода в правильном направлении.
Заранее спасибо.
Риши