0

我已经能够将 postgresql 与 java 链接起来。我希望用户在 java 的文本框中输入一个名称,然后执行搜索并检查该名称是否存在于数据库中。

到目前为止我的代码:

String hostname=this.hostNameText.getText();
try
{
s = connection.createStatement();
String q="SELECT * FROM hostdetails WHERE \"HOSTNAME\" = "+hostname;

rs = s.executeQuery(q);
}catch(Exception e)
{
System.out.println("Problem in searching the database 1");
}   

我在链接到表 hostdetails 时遇到问题。请注意,hostdetails 包含一个名为 HOSTNAME(大写字母)的字段。当我运行上面的代码时,我得到显示“搜索数据库 1 时出现问题”。请帮助我:)

4

1 回答 1

-1

尝试使用参数化查询来防止 SQL 注入。使用如下:

String hostname=this.hostNameText.getText();
try
{
String q="SELECT * FROM hostdetails WHERE \"HOSTNAME\" = ?"; //notice change here

//and use params like this
PreparedStatement pStmnt = connection.prepareStatement(q);
pStmnt.setString(1, hostname);

rs = pStmnt.executeQuery(q);
}catch(Exception e)
{
//error handling here
}   
于 2013-03-18T18:03:41.707 回答