SQL "like" 操作符的问题

请教各位大侠:下面的SQL语句经过JDBC/ODBC为何取不到数据?
"select customer from cus where cus_no like 'CM%'"
上面的语句直接查询数据库可以成功, 请教各位这是什么原因?

可以吧

很抱歉, 我的问题描述错了. 应该是这样的:
当直接用select top 10 * from cus where cus_no like 'CM%'查询时
可以查询到记录, 但将'CM%'换成? 就查询不到记录, 请高人指教!!!
源代码如下:


import java.sql.*;

public class JdbcTest{
public static void main(String[] args) throws Exception{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(
"jdbc:odbc:ikari","123", "123");

String sql =
"select top 10 * from cus where"+
" cus_no like ?";//'CM%'";
//String sql = "select top 10 datename(m, date)"+
" from bsr";
PreparedStatement pstmt = con.prepareStatement(sql);

pstmt.setString(1,
"CM%");

ResultSet rs = pstmt.executeQuery();
while (rs.next()){
System.out.println(rs.getObject(1));
}
}
}

另外我不碰到一个问题:下面的语句
select top 10 datename(m, date) from bsr 直接通过数据库查询可得
到10条记录, 在程序中通过Jdbc/Odbc查询也可得到10条记录但
记录中的结果却全为null, 见上面注释掉的代码,
这是为什么呢???

你的sql语句应该这样写


select top 10 * from cusrom cus where cus_no like ?

如果你的记录行如
CM01,CM01/02,cm\0304(冠军足球经理:)
用cm?当然不匹配,?只能泛指一个符号。

superhc: 我按你说有将?改为'?'后执行出现下面的异常.
zingers: 我用的是'CM%', 而不是'CM?'


java.lang.NullPointerException

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1021)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3034)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:764)

at JdbcTest.main(JdbcTest.java:23)

Exception in thread "main"

用jdbc/odbc的驱动使用prepareStatement会有问题
你的数据库是什么?用专门的jdbc driver试试看.

我用的数据库是MS SQLServer7.0, 是驱动程序的问题吗? 请哪里有
专门针对MS数据库的驱动程序?
另外不知PrepareStatement和Statement有什么区别? 我用Statement
试了也是同样的问题.