将数据库值放入小程序
Posted
技术标签:
【中文标题】将数据库值放入小程序【英文标题】:Getting database values into a applet 【发布时间】:2014-11-15 12:42:30 【问题描述】:我有一个访问数据库,其中有一个名为 student 的表,其中有一个 Id
字段。我创建了一个 Java 小程序,当我在小程序中的 TextField1
中输入 Id 值并按下 Display
按钮时,小程序应在 TextFields 中显示学生的其他详细信息。
这是我的“显示”按钮代码。
if(command=="Dispaly")
try
int stId=Integer.parseInt(textField1.getText());
ResultSet result=state.executeQuery("SELECT*FROM student WHERE Id=stId");
但这会导致错误,因为参数太少。Expected1。
但如果我将查询更改为
ResultSet result=state.executeQuery("SELECT*FROM student WHERE Id=3");
(这适用于 id=3 的学生)它工作正常。 我的代码有什么问题?有人可以给我看看吗?
【问题讨论】:
【参考方案1】:您的查询失败,因为数据库引擎无法知道stId
的含义。您需要将该值作为 参数 像这样传递
PreparedStatement state = conn.prepareStatement("SELECT * FROM student WHERE Id=?");
int stId=Integer.parseInt(textField1.getText());
state.setInt(1, stId);
ResultSet result=state.executeQuery();
【讨论】:
【参考方案2】:在你的查询中总会生成这条SQL“SELECT*FROM student WHERE Id= stId
”
而您真正需要的是用 stId 变量的值替换它。
所以您必须将 stId 附加到查询中才能像 "SELECT*FROM student WHERE Id="+ stId
将此行更改为..
ResultSet result=state.executeQuery("SELECT*FROM student WHERE Id="+ stId);
您可以阅读有关准备好的语句的更多信息(将参数动态传递给查询)https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html 我希望这会有所帮助!
【讨论】:
又一个数据库新手被告知要编写动态 SQL,而不是正确地使用参数化查询。 -1 @MuhammadHamed 当我尝试使用此preparedStatement 插入时,我收到错误driver does not support this function
这是我所做的String query = "INSERT INTO student (Id,studentName,age)"+ " VALUES(?, ?, ?)"; PreparedStatement state = con.prepareStatement(query); state.setInt (1, value1); state.setString (2, value2); state.setInt (3, value3); state.executeUpdate("INSERT INTO student (Id,studentName,age) VALUES ("+value1+","+value2+","+value3+")");
您没有再次通过查询.. 只需 state.executeUpdate();以上是关于将数据库值放入小程序的主要内容,如果未能解决你的问题,请参考以下文章
使用 extjs5 中的视图模型将 json 字符串中的一组值放入表单中