1

SQLサーバーに接続するためにCalciteを試しています。person テーブルからデータを取得するための非常に単純な例を実行しようとしています。

スキーマを使用しているコードは次のとおりです。

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 DB - 部門スキーマ - dbo

問題:

  1. テーブルが見つからないため、スキーマを読み取っていないようです。
  2. リアルタイム SQL は多くの結合でより複雑になるため、方解石でのスキーマ作成を理解したいと思います。
  3. SQLサーバーに接続する最良の方法は何ですか. 正しい方向のコードの上にあります。

前もって感謝します。

リシ

4

2 に答える 2