如何在 java NetBeans 中使用 sql 获取单个数据
Posted
技术标签:
【中文标题】如何在 java NetBeans 中使用 sql 获取单个数据【英文标题】:How to fetch a single data with sql in java NetBeans 【发布时间】:2014-04-20 12:20:52 【问题描述】:所以我试图将数量提取到一个变量中,我可以从中更改它并将其更新为用户提供的最终值。 我正在使用的语句:
int s= sta.executeUpdate("UPDATE stockDB SET Quantity="+quantity+" WHERE Name='"+name+"' AND Size="+size+"");
所以这个语句更新了整个数量数据,但我想删除用户提供的数量而不是整个数量本身。 我应该添加什么语句来获取数量然后更新它, 我试过了:
int s= sta.executeUpdate("SELECT Quantity FROM stockDB WHERE Name='"+name+"' AND Size="+size+"");
int quan=s;
quan=quan-quantity;
int ss= sta.executeUpdate("UPDATE stockDB SET Quantity="+quan+" WHERE Name='"+name+"' AND Size="+size+"");
我收到此错误:
java.sql.SQLException: 没有产生行数
怎么办? 我知道我做得不对。
更新:
ResultSet rs =sta.executeQuery("SELECT Quantity FROM stockDB WHERE Name='"+name+"' AND Size="+size+"");
String str = rs.getString("Quantity");
int quan = Integer.parseInt(str);
int fquan;
fquan=quan-quantity;
int ss= sta.executeUpdate("UPDATE stockDB SET Quantity="+fquan+" WHERE Name='"+name+"' AND Size="+size+"");
错误:
错误:游标状态无效
注意:
fquan=quan-quantity 中的数量变量是正确的。 数量是一个变量名。
【问题讨论】:
你试过name = "'; DROP TABLE stockDB; --";
.
【参考方案1】:
您应该使用executeQuery() 进行选择查询。对于插入、删除和更新,使用executeUpdate() 并返回int。所以
int s= sta.executeUpdate("SELECT Quantity FROM stockDB WHERE Name='"+name+"' AND Size="+size+"");
完全错误
executeQuery()
返回ResultSet
因此这样做
ResultSet rs =sta.executeQuery("SELECT Quantity FROM stockDB WHERE Name='"+name+"' AND Size="+size+"");
编辑
来自cmets
检索
while(rs.next())
System.out.println(rs.getString("Quantity"));
【讨论】:
你能告诉我如何将sql语句获取的数量存储到整数变量中吗? 那么 ResultSet rs 会自己存储数量吗?如果是,如何将 rs 转换为整数变量? 查看我的更新我已经编辑了行现在我得到错误:无效的光标状态 我已经按照您的原始问题回答了您的问题。我的回答将无效,因为您已经编辑了您的问题。您应该发布另一个问题 好的,谢谢你的回答帮助我获得了新的东西。以上是关于如何在 java NetBeans 中使用 sql 获取单个数据的主要内容,如果未能解决你的问题,请参考以下文章
抛出 java.sql.SQLSyntaxErrorException:ORA-00911:无效字符,无法在 Netbeans 中找到原因 [重复]
使用 NetBeans 连接到 Java 中的 Access 数据库
java.sql.SQLSyntaxErrorException:ORA-00942:netbeans 8.0.1 中的表或视图不存在错误消息