我有一个以下的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:昨天最新下载
答案 0 :(得分:0)
我能够找出问题所在。我刚刚从
更改了查询String query = "select * from users where userid=?";
到
String query = "select userid, passwd from chemdb.users where userid=?";
它工作正常。
谢谢!