2016-08-16 117 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

相关问题