将数据库值转换为applet

时间:2014-11-15 12:42:30

标签: java mysql database ms-access applet

我有一个名为student的表的访问数据库,并且在那里有一个Id字段。我创建了一个Java applet,当我在TextField1中输入Id的值时小程序并按下Display按钮,小程序应在TextFields中显示学生的其他详细信息。

这是我的“显示”按钮的代码。

if(command=="Dispaly"){
    try{
    int stId=Integer.parseInt(textField1.getText());
        ResultSet result=state.executeQuery("SELECT*FROM student WHERE Id=stId");

但是由于参数太少而产生错误。期望1。

但如果我将查询更改为

ResultSet result=state.executeQuery("SELECT*FROM student WHERE Id=3");

(那是id = 3的学生)它运作正常 我的代码出了什么问题?有人可以把它展示给我吗?

2 个答案:

答案 0 :(得分:3)

您的查询失败,因为数据库引擎无法知道stId的含义。您需要将该值作为参数传递,如此

PreparedStatement state = conn.prepareStatement("SELECT * FROM student WHERE Id=?");
int stId=Integer.parseInt(textField1.getText());
state.setInt(1, stId);
ResultSet result=state.executeQuery();

答案 1 :(得分:1)

在您的查询中将始终生成此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
我希望这可以帮助你!