将数据库值放入小程序

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();

以上是关于将数据库值放入小程序的主要内容,如果未能解决你的问题,请参考以下文章

如何将按钮值放入数据库Django

使用 javascript 将虚拟数据放入 html 模型

使用 extjs5 中的视图模型将 json 字符串中的一组值放入表单中

微信小程序云开发数据库多值设置

如何将 JComboBox 事件处理程序的字符串放入变量中进行查询?

小程序之从后台取到数据后放入想要的标签list里