Java 在postgreSQL中搜索

Java 在postgreSQL中搜索,java,postgresql,search,Java,Postgresql,Search,我已经能够将postgresql与java链接起来。我希望用户在java的文本框中输入一个名称,然后执行搜索并检查数据库中是否存在该名称 到目前为止,我的代码是: String hostname=this.hostNameText.getText(); try { s = connection.createStatement(); String q="SELECT * FROM hostdetails WHERE \"HOSTNAME\" = "+hostname; rs = s.execut

我已经能够将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包含一个字段nammed HOSTNAME(大写)。当我运行上述代码时,会显示“搜索数据库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
}   

使用e.printstackTrace()和share stacktrace。另外,请记住Postgresql对标识符有特殊的处理。为了避免混淆,标识符(表名和字段名)最好使用小写。如果在PostgreSQL中的列名中包含大写字母,则需要双引号。如果您对我投了反对票,请删除反对票并阅读PostgreSQL命名约定。事实上,这里有一个帖子可以让你踏上人生之路: