2014-08-01 3 views
0

У меня есть следующий Cassandra таблица "пользователи", определенные в пространстве ключей "chemdb"Cassandra JDBC ошибка preparedstatment

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

Я создал класс Java JDBConnec.java для подключения JSP с Кассандрой использованием JDBC:

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? Любые мысли о том, почему эта ошибка происходит. Заранее спасибо.

Cassandra версия: 2.0.8 Java: 7 Apache Tomcat: последние скачал вчера

+0

Что такое одинарные кавычки в «Генри»? Это должно быть скорее «Генри». –

+0

извините, что я ошибочно поставил код копирования-вставки здесь. В коде я использовал строковую переменную. –

+0

Похоже, что идентификатор пользователя не распознается. Убедитесь, что userid - это именно тот столбец, который вы ищете в базе данных. –

ответ

0

мне удалось выяснить проблему. Я только что изменил запрос от

String query = "select * from users where userid=?"; 

в

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

и он работал отлично.

Спасибо!

Смежные вопросы