0

ユーザーが入力した番号がデータベースに保存されているデータと一致するかどうかを確認する方法を探しています。例えば。ユーザーが「5132」と入力すると、特定の列のすべてのデータが配列にロードされ、そのデータをループして入力を比較し、一致を見つけることができます。

簡単に: データベース (結果セット) から int 配列にデータを解析するにはどうすればよいですか?

私が取得しようとしているものの簡単な例

String s = JOptionPane.showInputDialog(...);
int intS = Integer.parseInt(s);
boolean correct = false;

Get database info
count++; //for every data entry

int TagNumber [] = new int [count];

for (int i=0;i<count;i++) {
 if (intS == TagNumber[i]) {
  correct =true;
  break;
 }
}
4

1 に答える 1

2

データベースから値をロードし、ユーザーから特定の値を確認したい場合は、バイナリ検索を使用できます。それ以外の場合は、SQL クエリも使用できます。

以下は、配列内の値を見つけるための実装 (バイナリ検索) です。

public class BinarySearch {

    public static void main(String[] a) {
        int[] numArray = {5,6,10,11,19,18,30,25,88,44,55,1,3};
        Arrays.sort(numArray);
        // performing a binary search - here 100 is the element that you want 
            // to search in your array
        System.out.println(searchElement(numArray, 100));
    }

    private static int searchElement(int[] sortedArray, int element) {

        int first = 0;
        int upto  = sortedArray.length;

        while (first < upto) {
            int mid = (first + upto) / 2;  // Compute mid point.
            if (element < sortedArray[mid]) {
                upto = mid;       // repeat search in bottom half.
            } else if (element > sortedArray[mid]) {
                first = mid + 1;  // Repeat search in top half.
            } else {
                return sortedArray[mid];       // Found it. You can return the position or the element
            }
        }
        return -1;    // The element is not in the array
    }
}

データベース機能

public class RetrieveValues {
    public static void main(String args[]) throws SQLException {
        Connection conn = null;
        Statement select = null;
        try {
            Class.forName("com.somejdbcvendor.TheirJdbcDriver");
            conn = DriverManager.getConnection(
                            "jdbc:somejdbcvendor:other data needed by some jdbc vendor",
                            "myLogin", "myPassword");
            select = conn.createStatement();
            ResultSet result = select
                    .executeQuery("SELECT Element FROM TestTable");

            List<Integer> elementList = new ArrayList<Integer>();
            while (result.next()) { // process results one row at a time
                elementList.add(result.getInt(1));
            }
            // convert to int array

            convertIntegers(elementList);

        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            select.close();
            conn.close();
        }
    }

    public static int[] convertIntegers(List<Integer> elemIntegers)
    {
        int[] elements = new int[elemIntegers.size()];
        for (int i=0; i < elements.length; i++)
        {
            elements[i] = elemIntegers.get(i).intValue();
        }
        return elements;
    }
}
于 2012-08-10T15:08:11.623 に答える