jdbc的简单问题

ttoc 2004-06-24 01:33:05
我有一个表,叫ExChangeRete
里边有两个字段一个叫Currency是字符型的,一个叫Rete是双精度型的
我写了这么一段代码:
----------------------------------------------------------
public String getdata(String currency){
try {

String sql="SELECT Rete FROM ExChangeRete WHERE Currency='?'";
pStmt=con.prepareStatement(sql);//■■■1
pStmt.setString(1,currency);//■■■2
ResultSet rs=pStmt.executeQuery();
while (rs.next()){
return rs.getString("Rete");
}
stmt.close();
return "ERR";
} catch (Exception e) {
System.out.println("GetDate "+e);
return "ERR";
}
}
-------------------------------------------------------
程序运行后,打印GetDate java.lang.NullPointerException
如果在1和2之间打印一句话,能打印出来,在2后边加什么都打印不出来了
如果用
stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT Rete FROM ExChangeRete WHERE Currency='"+currency+"'");
就正常
这是怎么回事呀,我的代码写错了吗?麻烦大家帮忙了~
...全文
100 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyong33 2004-06-27
  • 打赏
  • 举报
回复
' 换民\'试试
ttoc 2004-06-27
  • 打赏
  • 举报
回复
谢谢dropship,我的确是写成中文的了,但是改成?之后,还是GetDate java.lang.NullPointerException~~~~

我真的没骗大家,为啥我的就这么怪呀!!!!
ttoc 2004-06-26
  • 打赏
  • 举报
回复
我是想说,用prepareStatement就做不出来,如果用Statement能做出来呀~~
dropship 2004-06-26
  • 打赏
  • 举报
回复
我想楼主是把英文的“?”弄成了中文的符号“?”
请敲一个英文的问号
ttoc 2004-06-26
  • 打赏
  • 举报
回复
to:lhw99
把引号去掉还是那样,还是java.lang.NullPointerException
lhw99 2004-06-26
  • 打赏
  • 举报
回复
ft,没听说过preparestatement不能做查询。
楼主的关键问题在于Currency='?',应该去掉引号。因为?是代替整个变量的,包括引号。
delphil 2004-06-24
  • 打赏
  • 举报
回复
String sql="SELECT Rete FROM ExChangeRete WHERE Currency='?'";这是查询语句
pStmt=con.prepareStatement(sql);//■■■1
pStmt.setString(1,currency);//■■■2 这是插入语句
你用查询语句去执行插入语句,你自己想想可能吗?

PrepareStatement 是用来修改数据库的,不是用来查询的
createStament()是用来查询的

62,615

社区成员

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

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