2013-02-20 12 views
5

तो मैं अपने प्रोजेक्ट में कैसंद्रा का उपयोग कर रहा हूं और मुझे ग्रहण और डेटा बेस के बीच कनेक्शन बनाना है। मैंने कोडबी पर पाया गया एक जेडीबीसी-अनुपालन चालक का उपयोग करने की कोशिश की लेकिन मुझे यह अपवाद मिल रहा है:कैसंद्रा/ग्रहण - कनेक्शन नहीं बना सकता

थ्रेड "मुख्य" java.lang.StringIndexOutOfBoundsException में अपवाद: स्ट्रिंग इंडेक्स सीमा से बाहर: - 1

यह मेरा कोड है:।

package cassandrasampledriver; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import org.apache.cassandra.cql.jdbc.DriverResolverException; 
import org.apache.cassandra.cql.jdbc.InvalidUrlException; 

public class CassandraDriver 
{ 

public static void main(String[] args) { 
    Connection con = null; 
    String KS = "cassandrademocql"; 

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

     Statement stmt = con.createStatement(); 
     String query = "DROP KEYSPACE cassandrademocql;"; 
     ResultSet result = stmt.executeQuery(query); 

    } 


    catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 
} 

अग्रिम धन्यवाद :)

+0

कर सकते हैं क्या आप हमें ड्राइवर को संस्करण आप उपयोग कर रहे बता सकते हैं? –

+0

सबसे पहले आपके उत्तर के लिए धन्यवाद! मैं सिर्फ यह कहना चाहता हूं कि मैं सिर्फ कैसंद्रा का उपयोग कर अभिनीत हूं इसलिए मुझे इसके बारे में बहुत कुछ पता नहीं है। मैं उपयोग कर रहा हूँ: डेटास्टैक्स समुदाय सर्वर | संस्करण 1.2.1 ग्रहण | संस्करण: जूनो सेवा रिलीज 1 जेडीके | 6u38 विंडोज़ x64 जेआरई मुझे आशा है कि यह आपके प्रश्न का उत्तर देगा। – user2090879

उत्तर

3

मैं अपने कोड this cql driver (संस्करण 1.1.2 कैसेंड्रा 1.2 के साथ संगत का उपयोग कर भाग गयाएक त्रुटि के बिना जेडीके 6 पर 210। हो सकता है कि आप अपने क्लासपाथ में संदर्भ खो रहे हों? कोड के साथ एकमात्र समस्या यह है कि आप एक वेरिएबल को एक विधि कॉल में असाइन कर रहे हैं जो कुछ भी ResultSet result = stmt.executeQuery(query); वापस नहीं लौटाएगा और इसलिए java.sql.SQLNonTransientException अपवाद फेंक दिया जाएगा।

आपने कहा कि आप कैसंद्रा के लिए नए हैं, बस कुछ दोस्ताना सलाह, मैं विकल्प बनाने से पहले APIs for Cassandra पर कुछ शोध करता हूं।

इन जार मैं

  • अपाचे-कैसेंड्रा-1.2.0-RC1-SNAPSHOT.jar
  • अपाचे-कैसेंड्रा-clientutil-1.2.0-RC1-SNAPSHOT.jar
  • उपयोग किया जाता है अपाचे-कैसेंड्रा-बचत-1.2.0-RC1-SNAPSHOT.jar
  • कैसेंड्रा-JDBC-1.1.2.jar libthrift-0.9.0.jar log4j-1.2.16.jar
  • log4j-ओवर-slf4j- 1.7.2.jar सेलेनियम-सर्वर-स्टैंडअलोन-2.21.0.jar
  • slf4j-api-1.7.2.jar slf4j-सरल-1.7.2.jar

पूर्ण कोड है कि मैं भाग गया:

package cassandrasampledriver; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class CassandraDriver { 
    public static void main(String[] args) { 
     Connection con = null; 
     String KS = "cassandrademocql"; 

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

      Statement stmt = con.createStatement(); 
      String query = "DROP KEYSPACE cassandrademocql;"; 

      // Because you are droping the KS this will not return anything 
      // So the result set will be null and a java.sql.SQLNonTransientException exception will be thrown every time. 
      ResultSet result = stmt.executeQuery(query); 

     } 


     catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
+0

आपकी मदद के लिए बहुत बहुत धन्यवाद! मैं वास्तव में इसकी सराहना करता हूं :) – user2090879

संबंधित मुद्दे