2012-07-06 38 views
0

当我运行这个程序时,我在输出屏幕中得到了这个。我不知道有什么问题是我有什么缺少的。如何从结果集中检索列值

import org.apache.cassandra.cql.jdbc.*; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.*; 
import javax.sql.*; 
public class Operations 
{ 
     public static void main(String[] args){ 
     try 
     { 
      Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver"); 
      Connection con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/temp"); 
      //String name = "name"; 
      String qry = "select name FROM tempcql where key = detail"; 
      Statement smt = con.createStatement(); 
      ResultSet resultSet = smt.executeQuery(qry); 
      while(resultSet.next()) 
      { 
       System.out.println(resultSet.getString("name")); 
      } 

     } 
     catch(Exception e) 
     { 
      System.out.println(" : "+e.getMessage()); 
     } 
      } 
} 

这里是这样的输出:java.nio.HeapByteBuffer [POS = 86 LIM = 91 =帽159]

回答

1

你可以尝试获取字节并将其转换为字符串:

String name_result = new String(resultSet.getBytes("name"), "UTF-8"); 
System.out.println(name_result); 
0

尝试在你的SQL字符串中使用单引号:

String qry = "select name FROM tempcql where key = 'detail'"; 
+0

我这样做,但它不工作。同样的结果我再次得到 – 2012-07-06 13:09:21

0

您正在以二进制格式获取该值。但是您将列类型指定为字符串。而您需要说明如下:

ObjectInputStream is = rs.getBinaryStream("name"); 
ByetBuffer bb = (ByteBuffer)is.readObject();