2016-08-16 116 views
0

我正嘗試使用JDBC驅動程序連接到Cassandra。我卡桑德拉版本2.2.4是和java 1.7.0_101:使用JDBC驅動程序連接到Cassandra

Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver"); 
Connection con = DriverManager.getConnection("jdbc:cassandra://10.11.15.242:9160/edgeview"); 

其中 「edgeview」 是我的密鑰空間。我已經連接到cassandra使用9160端口因爲它不允許我沒有libthrift庫(跨語言庫)連接。

如果我想查詢cassandra它總是給我錯誤爲「字符串索引超出範圍:-1」。

這似乎是一些兼容性問題,因爲我的許多發現都說cassandra 2.2+與thrift已被棄用。

我該如何着手解決這個問題?

Thanx預先

回答

0

我不知道它是否強制使用jdbc。如果不是,我會建議你使用datastax driver for cassandra。我已經使用過它,它非常簡單。如果您在設置時遇到困難,我可以提供幫助。

+0

Thanx Reveka但我得到了查詢工作。唯一的問題是時間戳列。對此有何幫助? – SnehaT

+0

你可以給我發送查詢中使用的時間戳字符串嗎? – Reveka

+0

時間戳的格式爲:2016-01-21 18:30:00.000000 + 0000 .......我不確定JDBC如何處理cassandra timestamp列。在查詢中添加列名稱的那一刻,它會給出錯誤。 :( – SnehaT

0

我使用JPA與卡桑德拉因此JDBC

<persistence-unit name="Cassandra" transaction-type="RESOURCE_LOCAL"> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.github.cassandra.jdbc.CassandraDriver" /> 
     </properties> 
</persistence-unit> 

您可以使用JDBC與卡桑德拉雖然有來自 datastax

行家依賴

com.github非JDBC解決方案.zhicwu enter code here cassandra-jdbc-driver 0.6.1

關於

0

繼Cassandra文檔之後,您應該使用Datastax Java API。 Cassandra它不是一個SQL數據庫,而是一個NOSQL,因此完全有一個不同的系統。

如果你有一個maven項目添加這些依賴關係的pom.xml配置文件:

<dependency> 
     <groupId>com.datastax.cassandra</groupId> 
     <artifactId>cassandra-driver-core</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.datastax.cassandra</groupId> 
     <artifactId>cassandra-driver-mapping</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.datastax.cassandra</groupId> 
     <artifactId>cassandra-driver-extras</artifactId> 
     <version>3.1.0</version> 
    </dependency> 

這裏,Maven倉庫網址: https://mvnrepository.com/artifact/com.datastax.cassandra/cassandra-driver-core

後,創建你的第一個Hello卡桑德拉主像如下:

package cassandraMain;  
import com.datastax.driver.core.Cluster; 
    import com.datastax.driver.core.Session; 

    public class Main { 

     public static void main(String[] args) { 
      // Only a short example 
      // You must to take care about the several exception and the usage of the cluster and session objects... 

      Cluster cluster; 
      Session session; 

      // Connect to the local cluster with the keyspace demodb 
      cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); 
      session = cluster.connect("demodb"); 

      // Insert one record - only for test... 
      session.execute("INSERT INTO test (username, name, surname)" 
        + " VALUES ('test_"+System.currentTimeMillis()+"', 'Andrea', 'Giassi')");   

      session.close(); 
      cluster.close();   
     } 

    } 

我希望這可以幫助你。 King Regards

相關問題