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 に答える