Cassandra JDBC preparedstatment错误

时间:2014-08-01 06:44:15

标签: java jdbc cassandra

我有一个以下的cassandra表"用户"在keypace" chemdb"

中定义
CREATE TABLE users (
  userid text PRIMARY KEY,
  passwd text,
  fname text,
  lname text,
  creationdate timestamp,  
  isactive text  
);   

我使用jdbc创建了一个java类JDBConnec.java来连接jsp和cassandra:

package dbclasses;

    import java.sql.*;
    import java.lang.*;
    import java.io.*;   

     public class JDBConnec {

           public Statement stmt=null;     
           public ResultSet rs=null;   
           public Connection con=null;

       public PreparedStatement pstmt = null;


        public JDBConnec()
        {

        try
        {
            Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
            con = DriverManager.getConnection("jdbc:cassandra://127.0.0.1:9160/chemdb","okkkkk","12345");   
        }
        catch(Exception ex)
        {
            System.out.println(ex.getMessage());         
        }
       }
    }

上面的课程已经成功编译。

但是在我的jsp文件中,当我使用以下代码通过使用Preparedstatements从数据库中选择记录时,我得到以下提到的错误:

JDBConnec db = new JDBConnec();
String query = "select * from users where userid=?";
db.pstmt = db.con.prepareStatement(query); 
db.pstmt.setString(1, "henry");
db.rs = db.pstmt.executeQuery();

它出现以下错误

InvalidRequestException(why:Undefined name userid in where clause ('userid EQ ?'))

cassandra jdbc驱动程序是否支持jsp中的preparedstatments?有关为何发生此错误的任何想法。提前谢谢。

Cassandra版本:2.0.8 Java:7 Apache tomcat:昨天最新下载

1 个答案:

答案 0 :(得分:0)

我能够找出问题所在。我刚刚从

更改了查询
String query = "select * from users where userid=?";

String query = "select userid, passwd from chemdb.users where userid=?";    

它工作正常。

谢谢!