0

現在、「%input%」の入力に一致するものを「検索」すると、テーブル内のすべてのデータを返すjdbc接続を実装しようとしています。

例えばResultSet rs4 = stm4.executeQuery("select imageTime from image_data where imageName like '%" + value3 + "%' or imageTime like '%" + value3 + "%' or imageLocation like '" + value3 + "'" );

結果セットのすべての行を検索結果として返そうとしています。しかし、行く行がなくなったときにResultset.nextをコマンドすると、次の結果セットがすべてnullになります。

何かIDがあれば、結果セット全体を出力するメソッドが大好きです。ありがとう。

質問を編集する編集:より直接的に; 結果セットの各列を含む各行からすべてのデータを取得する方法が必要です。だから私はそれを出力することができます。これは、以下の私の試みです。

rs4=以下で宣言されている結果セット。

これが私のコードです。

if(name_time_location == 1)
        {                
            String value3=searchInput.getText();//Sets the search Input as value3


            // selecting the cominbation from table, that match input options                               
            try{
                con = DriverManager.getConnection("jdbc:mysql:blah blah");

                // Query the database for the correct username and passord                    
                Statement stm3 = con.createStatement();  
                Statement stm4 = con.createStatement();
                Statement stm5 = con.createStatement();


                //queries database for password from input username 
                ResultSet rs3 = stm3.executeQuery("select imageName from image_data    where imageName like '%" + value3 + "%' or imageTime like '%" + value3 + "%' or imageLocation like '" + value3 + "'" );
                //ResultSetMetaData rsmd = rs3.getMetaData();
                //stm3.setFetchSize(5);
                //rs3.last();
                //int numberOfRows = rs3.getRow();


                //String[] resultList; 
                //resultList = new String[numberOfRows];
                // Fetch each row from the result set
                rs3.beforeFirst();
                while(rs3.next())
                {
                    imageSearchResult1 = rs3.getString(1); 
                    rs3.next();
                    imageSearchResult11 = rs4.getString(1);
                    rs3.next();
                    imageSearchResult12 = rs4.getString(1);
                    rs3.next();
                    imageSearchResult13 = rs4.getString(1);
                    rs3.next();
                    imageSearchResult14 = rs4.getString(1); 
                }rs3.close();

            }catch (Exception e)
            {
                    //System.out.println("Exception: " + e + "");
            }

            System.out.println("Search Results: \nName: " + imageSearchResult1 + "         Time stamp: " + imageSearchResult2 + "   Location: " + imageSearchResult3 + "\n" +
                    "Name: " + imageSearchResult11 + "   Time stamp: " + imageSearchResult21 + "   Location: " + imageSearchResult31 + "\n" + 
                    "Name: " + imageSearchResult12 + "   Time stamp: " + imageSearchResult22 + "   Location: " + imageSearchResult32 + "\n" +
                    "Name: " + imageSearchResult13 + "   Time stamp: " + imageSearchResult23 + "   Location: " + imageSearchResult33 + "\n" +
                    "Name: " + imageSearchResult14 + "   Time stamp: " + imageSearchResult24 + "   Location: " + imageSearchResult34 + "\n" );
4

1 に答える 1

2

クエリを変更し、3つのクエリを作成する代わりに、次のように同じクエリで3つの値を取得することで、同じことを実現できると思います。

select imageName,imageLocation,imageTime from .....

次に、このクエリを使用してResultSetを生成し、3つの値をとして取得しますrs.getType(1),rs.getType(2),rs.getType(3)

同じwhile(rs.next())ループで、印刷するデータを印刷できます。

于 2012-06-04T08:53:25.637 に答える