JAVA带预编译的模糊查询问题

bianbianchaoren 2007-06-19 12:51:44
import java.sql.*;
public class mohu
{public static void main(String args[])
{
Connection con;
//Statement sql;
ResultSet rs;
PreparedStatement sql;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{System.out.println(" "+e);
}
try{con=DriverManager.getConnection("jdbc:odbc:词典","","");
System.out.println("数据库连接成功");


sql=con.prepareStatement("SELECT * FROM 翻译 where 中文 LIKE '%?%'");
sql.setString(2,"瓷");
System.out.println(sql);
rs=sql.executeQuery();
while(rs.next())
{String number=rs.getString(1);
String kname=rs.getString(2);

System.out.print("中文:"+number);
System.out.print(" 英文:"+kname);

}
con.close();
}
catch(SQLException e)
{ System.out.println(e);}
}
}
以上为源码,编译后运行不出结果,但把语句 sql=con.prepareStatement("SELECT * FROM 翻译 where 中文 LIKE '%?%'");
sql.setString(2,"瓷");
换成
sql=con.prepareStatement("SELECT * FROM 翻译 where 中文 LIKE '%瓷%'");
就通了,哪位达人帮帮忙看下,呵呵。。。。。
...全文
913 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
snail360 2011-03-22
  • 打赏
  • 举报
回复
大哥,我也遇到了这个问题,后来解决了,不过不是用的预编译:String sql="SELECT * FROM 翻译 where 中文 LIKE '%" + 瓷 + "%'";
我是传的参数,“瓷”是用一个参数代替的。
xudong1552 2007-06-26
  • 打赏
  • 举报
回复
创建这个类preparedStatement实例时《输入参数时》用“?”代替,在执行带参数的sql语句《前》,必须对”?“进行赋值,这就是为什么没通过的原因。
joejoe1991 2007-06-21
  • 打赏
  • 举报
回复
我也郁闷这个问题呢 我觉得实在不行就用另一个笨一点的方法
用sql里的charindex代替like
数据量不大的话 我想应该没有什么问题的吧
bianbianchaoren 2007-06-21
  • 打赏
  • 举报
回复
sql=con.prepareStatement("SELECT * FROM 翻译 where 中文 LIKE ?");  
sql.setString(1, "'%瓷%'");
=====================================
楼上的,谢谢你的提示。对于这一类的操作我已经尝试多遍,都不行,关于这个查询还有其他方案吗
huoyin 2007-06-20
  • 打赏
  • 举报
回复
sql=con.prepareStatement("SELECT * FROM 翻译 where 中文 LIKE ?");  
sql.setString(1, "'%瓷%'");
bianbianchaoren 2007-06-20
  • 打赏
  • 举报
回复
试了不通啊,楼上的,还有其他方案没
  • 打赏
  • 举报
回复
sql=con.prepareStatement("SELECT * FROM 翻译 where 中文 LIKE '%瓷%'");
========================
汗,上面一句跟用Statement一样,不存在预编译了,改成下面的试试看:
  sql=con.prepareStatement("SELECT * FROM 翻译 where 中文 LIKE ?");  
  sql.setString(1, "%"+"瓷"+"%");
当然了,“ "瓷" ”可以用变量代替。
tdy1234 2007-06-19
  • 打赏
  • 举报
回复
没看懂,明明应该是 sql.setString(1,"瓷"); 为什么是2阿

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧