【发布时间】:2014-08-01 06:44:14
【问题描述】:
我在键空间“chemdb”中定义了以下 cassandra 表“用户”
CREATE TABLE users (
userid text PRIMARY KEY,
passwd text,
fname text,
lname text,
creationdate timestamp,
isactive text
);
我创建了一个 java 类 JDBConnec.java 来使用 jdbc 连接 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 爪哇:7 Apache tomcat:昨天最新下载的
【问题讨论】:
-
“henry”中的单引号是什么意思?它应该是“henry”。
-
对不起,我在这里复制粘贴代码时错误地放了。在代码中我使用了一个字符串变量。
-
似乎无法识别用户 ID。确保用户 ID 正是您在数据库中查找的列。
-
是查询问题。我更改了查询并删除了星号,它工作正常。谢谢。