功能是通过输入一个字符来获取该字符的拼音
下面代码中传递进来的参数是ch
给的是‘呵’之类的中文字符时
可以正确返回拼音
但是如果是数字(全角输入) result.next给的值都是false 即无法查询该数字的拼音
在我直接拿这条SQL做查询时能在数据库中查到结果不知道是什么原因,请高手指点下~在数据库里我存放记录 使用INFORMIX数据库
1 yi 1 2009-06-01 12:21:19.0 1 0
呵 he 1 2002-11-01 00:00:00.0 1 0
‘1’是全角字符
sql = "SELECT * FROM dic_name_words WHERE word=? AND efficacy='1' AND trim(tone)<>'' AND tone is not null";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, ch);
result = pstmt.executeQuery();
while (result.next()) {
System.out.println("OKKKKK");
vt.add(result.getString("spell") + result.getString("tone"));
}

解决方案 »

  1.   

    有没有人指教啊 苦等啊
    其实也可以换个问题
    INFORMIX下我这个查询可以执行
    但是用jdbc的方式中间是不是参数传递会有问题?
      

  2.   

    1、试一下直接执行sql是否可以;
    2、如果直接执行sql可以,检查是否传入的参数有问题。一般来说,直接执行sql可以,用jdbc也可以的
      

  3.   

    我有特别注意编码的问题
    全角和半角都试过了
    不能返回结果现在我直接
    sql = "SELECT * FROM dic_name_words WHERE word='呵' AND efficacy='1' AND trim(tone)<>'' AND tone is not null";
    stmt = conn.createStatement();
    result = stmt.executeQuery(sql);
    这个是可以成功的但是
    sql = "SELECT * FROM dic_name_words WHERE word='1' AND efficacy='1' AND trim(tone)<>'' AND tone is not null";
    stmt = conn.createStatement();
    result = stmt.executeQuery(sql);
    是失败的或者那个字符是半角的 也是一样
      

  4.   

    数据库SQL执行时没有问题
    不管是汉字还是数字 全角还是半角在ch传递参数执行时就有问题了
    如果是汉字 返回结果正确
    如果是数字 不管编码如何 查询不成功不知道这个参数传递有什么问题
    像我写在4楼的代码
    我不传参数
    直接写死执行也不能成功查询
      

  5.   

    执行汉字查询的时候是可以的
    但是执行数字查询时
    result结果集为空