0

JavaのSQLデータベースから1つのデータのみを抽出したいと思います。resultSetを使用しようとしましたが、最初の行をint変数に抽出したい場合、resultSetにコンテンツがないと表示されました。

これが私のコードです

try {

            statement = connexion.createStatement();
            statementArtist = connexion.createStatement();
            String artist = "Mac Miller";
            ResultSet resultat = statement.executeQuery("USE albums SELECT Album.numero_artist FROM Album INNER JOIN Artist ON Album.num_artist = Artiste.num_artist where name like '"+artist+"'");    
            int result = resultat.getInt(1); // Here is the problem
            String query = "USE albums INSERT INTO dbo.Album(Album.num_artist, title, price, genre, date, home, image) VALUES("
                    + result
                    + ", '"
                    + title
                    + "', "
                    + price
                    + ", '"
                    + genre
                    + "', '"
                    + date
                    + "', '"
                    + home
                    + "', '"
                    + image
                    + "')";
            statement.executeUpdate(query);
4

2 に答える 2

2

結果セットでメソッドを呼び出しnext()て、イテレータを「移動」する必要があります。

...
ResultSet resultat = statement.executeQuery("USE albums SELECT Album.numero_artist FROM Album INNER JOIN Artist ON Album.num_artist = Artiste.num_artist where name like '"+artist+"'");    
resultat.next();           
int result = resultat.getInt(1); // Here is the problem
...

また、セキュリティとパフォーマンスの向上がアプリケーションにとって重要である場合は、プリペアドステートメントの使用も検討する必要があります。

于 2012-09-30T22:15:52.297 に答える
0

next()を使用する必要があります。また、結果をテストする必要があります。

ResultSet resultat = statement.executeQuery("USE albums SELECT Album.numero_artist FROM Album INNER JOIN Artist ON Album.num_artist = Artiste.num_artist where name like '"+artist+"'");    
if (resultat.next()) {
    int result = resultat.getInt(1); // Here is the problem

また、同様の'"+ Artists +"' "はエラーが発生しやすいです。たとえば、アーティストに引用符"'"が含まれている場合、ほとんどのDBでSQLエラーが発生します。SQLパラメータを使用してサポートする

于 2012-09-30T22:26:12.570 に答える