1

表 雇用主

CREATE TABLE "Employer" ("employerID" INTEGER PRIMARY KEY  NOT NULL ,
"name" CHAR,
"industry" CHAR,
"contact1" CHAR,
"contact2" CHAR,
"email" CHAR,
"website" CHAR,
"facts" CHAR,
"phone" VACHAR)

テーブル ジョブ

CREATE TABLE "Job" ("jobID" INTEGER PRIMARY KEY  NOT NULL ,
"employerID" INTEGER,
"title" CHAR,
"description" CHAR,
"type" CHAR,"salary" CHAR,
"benefits" CHAR,
"vacancies" INTEGER,
"closing" CHAR,
"requirement" CHAR,
"placement" BOOL,
"applyTo" CHAR,
"status" CHAR,
"posted" CHAR, 
"location" CHAR)

 try {  
    //String sqlStm = "INSERT INTO Job (employerID,title,description,type,salary,benefits,vacancies,closing,requirement,placement,applyTo,status,posted,location) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?) INNER JOIN Employer ON Job.employerID = Employer.employerID"; 
   String sqlStm = "SET @SELECTED_ID = (SELECT employerID FROM Employer WHERE name = '"+comboEmployer.getSelectedItem().toString()+"') INSERT INTO Job (employerID,title,description,type,salary,benefits,vacancies,closing,requirement,placement,applyTo,status,posted,location)VALUES (@SELECTED_ID,?,?,?,?,?,?,?,?,?,?,?,?,?)";
       pst = conn.prepareStatement(sqlStm);

    pst.setString(2,txtTitle.getText());
     pst.setString(3,areaDescription.getText());
      pst.setString(4,comboType.getSelectedItem().toString());
       pst.setString(5,txtSalary.getText());
        pst.setString(6,areaBenefits.getText());
         pst.setString(7,txtVac.getText());
          pst.setString(8,txtDate.getDateFormatString().toString());
           pst.setString(9,areaReq.getText());
            pst.setString(10,comboPlace.getSelectedItem().toString());
             pst.setString(11,txtWeb.getText());
              pst.setString(12,comboStatus.getSelectedItem().toString());
               pst.setString(13,"01-01-2013");
                pst.setString(14,txtLoc.getText());
                   pst.executeUpdate();
   } catch (Exception e) {
        JOptionPane.showMessageDialog(null,e);
    } finally {
        try {
            rs.close();
            pst.close();
        } catch (Exception e) {
        }
    }  
}

ユーザーがシステムにジョブを追加できるようにしようとしていますが、フォームでEmployerテーブルから雇用主を選択する必要があります。選択した雇用主をジョブに関連付ける方法がわかりませんJCombobox。つまり、JobテーブルのemployerIDは、テーブルのemployerIDと一致する必要がありemployerます。私はなんとかSelect声明を出すことができました、

 sql = "SELECT Job.jobID as 'Job ID', Employer.name as'Company', Job.title as 'Role', Job.type as 'Type', Job.closing as 'Closing Date' FROM Job INNER JOIN Employer ON Job.employerID=Employer.employerID ORDER BY Employer.name";

INSERTしかし、 sqliteマネージャーへの入り方がわかりません。フォームは次のとおりです。ここに画像の説明を入力

4

3 に答える 3

0

私はあなたが何をしようとしているのか理解していると思います。フォームに入力された値を使用して「Job」テーブルに追加しようとしています。雇用者のドロップダウン ボックスはテキスト形式であり、「雇用者」テーブルは雇用者 ID のみを受け入れるため、雇用者名を雇用者 ID に変換する何かが必要です。

このコードを試してみてください。これはバニラ SQL で書かれているため、SQLite 用に若干の調整が必要になる場合があります。

SET @SELECTED_ID = (SELECT employerID
                   FROM Employer
                   WHERE name = @your_text_box_variable)

INSERT INTO Job (employerID,title,description,type,salary,benefits,vacancies,closing,requirement,placement,applyTo,status,posted,location) 
VALUES (@SELECTED_ID,?,?,?,?,?,?,?,?,?,?,?,?,?)

基本的に、フォームから取得した雇用者名の値 (変数 @your_text_box_variable を使用して送信) を取得し、その名前に関連付けられた雇用者 ID を取得します。次に、この雇用者 ID を使用して「Job」テーブルに挿入できます。

于 2013-01-07T19:53:10.870 に答える
0

フロントエンドのコーディング自体から処理できます。Combobox には、Value と Text の 2 つがあります。ComboBox 項目の値は Job id で、テキストは Description である必要があります。クエリを使用して、Selectこの部分を取得します。次に、Selected オプションの値を挿入できます。したがって、ジョブ ID が挿入されます。

于 2013-01-07T19:43:44.810 に答える
0

タイプJComboBoxのオブジェクトが含まれている必要がありますEmployer。この Employer クラスには、少なくとも雇用主の ID (一意に識別できるようにするため) と雇用主の名前 (コンボ ボックスに表示するため) を含める必要があります。

新しいジョブを挿入するには、コンボ ボックスから選択した Employer を取得し、その ID を取得して、それをクエリに渡します (内部結合は使用しないでください)。

insert into job (employerID,title, ...) values (?, ?, ...)
于 2013-01-07T20:01:35.060 に答える