使用JDBC驱动程序连接到Cassandra

时间:2016-08-16 09:29:09

标签: java jdbc cassandra

我正在尝试使用JDBC驱动程序连接到Cassandra。我的Cassandra版本是2.2.4和java 1.7.0_101:

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

在哪里" edgeview"是我的键空间。我已经使用9160端口连接到cassandra因为它不允许我在没有libthrift库(交叉语言库)的情况下连接。

如果我试图查询cassandra它总是给我错误"字符串索引超出范围:-1"

似乎是一些兼容性问题,因为很多我的发现都说已经弃用了Cassandra 2.2+和thrift。

有关如何进行此操作的任何帮助?

提前完成

2 个答案:

答案 0 :(得分:1)

我正在使用带有cassandra的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解决方案,但您可以将jdbc与cassandra一起使用 datastax

maven依赖

       com.github.zhicwu enter code here        卡桑德拉-JDBC驱动程序        0.6.1     

问候

答案 1 :(得分:-1)

遵循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存储库URL: https://mvnrepository.com/artifact/com.datastax.cassandra/cassandra-driver-core

之后,创建你的第一个Hello Cassandra main,如下所示:

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();        
        }   

    }

我希望这可以帮到你