1

我尝试使用以下代码连接本地系统上的 CASSANDRA 数据库。

package com.prm.cassandra;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

public class CassandraUserManager {
public static void connectToCassandra(){
    DataBaseConnection dbCon = new DataBaseConnection();
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try{
        con = dbCon.getConnection();

        String query = "SELECT * from users";
        pstmt = con.prepareStatement(query);
        rs = pstmt.executeQuery();
        System.out.println("The Details are printed below.");
        ResultSetMetaData rmd = rs.getMetaData();
        while(rs.next()){
            for(int i=0; i<rmd.getColumnCount(); i++)
            System.out.print("  "+rs.getString(i));
        }
    }catch(Exception ex){
        ex.printStackTrace();
    }finally{
        dbCon.closeResources(con, pstmt, rs);
    }
}
}

并使用以下几行来获取数据库连接

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

但是得到了以下运行时异常。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Jul 16, 2013 1:08:39 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet connectCassandra threw exception
java.lang.ClassNotFoundException: org.apache.thrift.TEnum
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1819)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1327)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
at org.apache.cassandra.cql.jdbc.Utils.<clinit>(Utils.java:62)
at org.apache.cassandra.cql.jdbc.CassandraDriver.connect(CassandraDriver.java:85)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at com.prm.cassandra.DataBaseConnection.getConnection(DataBaseConnection.java:14)
at com.prm.cassandra.CassandraUserManager.connectToCassandra(CassandraUserManager.java:15)
at com.prm.cassandra.CassandraServlet.doGet(CassandraServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:680)

我已按照CASSANDRA-JDBC 示例的建议使用了下面提到的 jar

apache-cassandra-clientutil-1.2.6.jar
apache-cassandra-thrift-1.2.6.jar
cassandra-jdbc-1.2.5.jar

和下面的一个用于记录

slf4j-api-1.6.1.jar

请帮我解决这个问题。等待有用的答案。提前致谢。

4

2 回答 2

0

请尝试使用下面的代码......以及网站中给出的程序......您将能够解决相同的问题。

http://www.bigdataplanet.info/2013/08/How-to-use-Cassandra-CQL-in-your-Java-Application.html

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class CqlConnection {


 public static void main(String[] args) throws Exception{

  Connection con = null;
  try {
   Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
   con = 
DriverManager.getConnection("jdbc:cassandra://localhost:9160/Keyspace");

   String query = "SELECT * FROM column_family where gender=f ";

   Statement stmt = con.createStatement();
   ResultSet result = stmt.executeQuery(query);

   while (result.next()) {
    System.out.println(result.getString("user_name"));
    System.out.println(result.getString("gender"));
    System.out.println(result.getString("password"));
   }

  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   if (con != null) {
    try {
     con.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
    con = null;
   }
  }

 }
于 2013-09-18T12:49:35.370 回答
0

请在下面添加依赖项pom.xml......

             <dependency>
             <groupId>org.apache.thrift</groupId>
                 <artifactId>libthrift</artifactId>
                 <version>0.9.3</version>
                 </dependency>
                 <dependency>
                     <groupId>log4j</groupId>
                     <artifactId>log4j</artifactId>
                     <version>1.2.17</version>
                 </dependency>
                 <dependency>
                     <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-api</artifactId>
                     <version>1.7.5</version>
                 </dependency>
                 <dependency>
                     <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-log4j12</artifactId>
                     <version>1.7.5</version>
                 </dependency>
于 2018-10-11T08:30:50.067 回答