首页 文章

使用JDBC驱动程序连接到Cassandra

提问于
浏览
0

我正在尝试使用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 with thrift已被弃用 .

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

Thanx提前

3 回答

  • -1

    我正在使用JPA和cassandra,因此使用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>
    

    虽然有一个来自datastax的非jdbc解决方案,但您可以将jdbc与cassandra一起使用

    maven依赖

    com.github.zhicwu enter code here cassandra-jdbc-driver 0.6.1

    问候

  • -1

    我不知道你是否强制要求使用jdbc . 如果不是,我建议您使用datastax driver for cassandra . 我用过它真的很容易 . 如果您在设置时遇到问题,我可以提供帮助 .

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

    我希望这可以帮到你

相关问题