0

データをデータベースに保存するソフトウェアを作成する際に、2 つのクラスを作成しました。1 つのクラスは、ユーザーがデータを入力するために使用するフォームを使用して GUI を定義し、もう 1 つのクラスはデータをデータベースに保存します。

データはコンストラクターを介してデータベース クラスに渡されますが、ここで問題が発生します。

コードは次の場所で赤く強調表示されます (エラー)。

tableValues.add(fullNames);
tableValues.add(iDNumber);

エラー:

No suitable method found for add(String)  
method Vector.add(int, String) not applicable  
(actual and formal argument lists differ in length)  

上記のエラーを取り除くのを手伝ってください。データベースクラスは大丈夫だと思いますが、とにかく含めました。GUI クラスの getValues() メソッドでエラーが発生したと思います。

GUI クラスの一部:

private void addNewClientSubmitMouseClicked(java.awt.event.MouseEvent evt) {                                                
        String sql = "UPDATE Employees set age = ? WHERE id = ?";

        new UpdateAndQuerry(getValues(), "CLIENT", sql).main();

        // new JDBCExampleInsertRecords(getValues(), "CLIENT").main();
    }

public String getValues () {
        String fullNames = fullNamesJTextField.getText();
        String iDNumber = identificationNumberJTextField.getText();

        Vector<String[]> tableValues = new Vector<String[]>();

        // These two get highlighted:
        tableValues.add(fullNames);
        tableValues.add(iDNumber);

        Iterator<String[]> iter = tableValues.iterator();
        StringBuilder sb = new StringBuilder();

        while (iter.hasNext()) {
            sb.append("'").append(iter.next()).append("'");

            if (iter.hasNext())
                sb.append(",");
        }
        return sb.toString();

    }

データベース クラス:

//STEP 1. Import required packages
import java.sql.*;

public class JDBCExampleInsertRecords {
    public static String values;
    public static String table;

    public JDBCExampleInsertRecords (String values, String table) 
    {
        this.values = values;
        this.table = table;
    }

    // JDBC driver name and database URL
    private static String JDBC_DRIVER = "org.h2.Driver";
    private static String DB_URL = "jdbc:h2:file:C:/WAKILI/WAKILIdb";

    //  Database credentials
    private static String USER = "sa";
    private static String PASS = "";

    public static void main () {
        Connection conn = null;
        Statement stmt = null;

        try {
            //STEP 2: Register JDBC driver
            Class.forName(getJDBC_DRIVER());

            //STEP 3: Open a connection
            System.out.println("Connecting to a selected database...");
            conn = DriverManager.getConnection(getDB_URL(), getUSER(), getPASS());
            System.out.println("Connected database successfully...");

            //STEP 4: Execute a query
            System.out.println("Inserting records into the table...");
            stmt = conn.createStatement();

            String sql = "INSERT INTO " + (table) + " VALUES (NULL, " + (values) + ")";

            stmt.executeUpdate(sql);

            System.out.println("Inserted records into the table...");

        } catch (SQLException se) {
            //Handle errors for JDBC
            se.printStackTrace();
        } catch (Exception e) {
            //Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            //finally block used to close resources
            try {
                if (stmt != null)
                    conn.close();
            } catch (SQLException se) {
            } // do nothing
            try {
                if (conn!=null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            } //end finally try
        } //end try

        System.out.println("Goodbye!");
    } //end main

    /**
     * @return the JDBC_DRIVER
     */
    public static String getJDBC_DRIVER() {
        return JDBC_DRIVER;
    }

    /**
     * @param aJDBC_DRIVER the JDBC_DRIVER to set
     */
    public static void setJDBC_DRIVER(String aJDBC_DRIVER) {
        JDBC_DRIVER = aJDBC_DRIVER;
    }

    /**
     * @return the DB_URL
     */
    public static String getDB_URL() {
        return DB_URL;
    }

    /**
     * @param aDB_URL the DB_URL to set
     */
    public static void setDB_URL(String aDB_URL) {
        DB_URL = aDB_URL;
    }

    /**
     * @return the USER
     */
    public static String getUSER() {
        return USER;
    }

    /**
     * @param aUSER the USER to set
     */
    public static void setUSER(String aUSER) {
        USER = aUSER;
    }

    /**
     * @return the PASS
     */
    public static String getPASS() {
        return PASS;
    }

    /**
     * @param aPASS the PASS to set
     */
    public static void setPASS(String aPASS) {
        PASS = aPASS;
    }
} //end
4

1 に答える 1

0

tableValuesであると宣言したVectorのはなぜString[]ですか? がある場合は、ではなく をString[]追加する必要があります。String[]String

文字列配列のは必要ありません。必要なのVectorは文字列の だけですVector。宣言を変更します。

Vector<String[]> tableValues = new Vector<String[]>();

//      No []                            No []
Vector<String> tableValues = new Vector<String>();

その後、への呼び出しはadd正しくなります。

于 2013-09-17T21:54:00.590 に答える