2010-12-14 63 views
0

J'essaie de transférer une requête SQL dans Java à partir de mon espace de travail. J'ai écrit cette requête dans l'atelier mySQL et elle s'est exécutée correctement avec les résultats que je voulais.Transfert d'une requête SQL du workbench vers une classe .java

SELECT committee_member. member_CAN#, member. first_name, member. last_name, committee_member. member_status, committee_member. start_year, committee_member. end_year, committee_member. added_notes FROM membre du comité LEFT JOIN membre ON committee_member. member_CAN# = CAN#

Voici mon code de classe .java. J'essaie d'imprimer une table qui affiche cette information. Je continue à recevoir une erreur qui lit "Table inconnue" membre_committee 'dans la liste des champs "dans eclipse, donc je devine que ma syntaxe de requête est erronée.

package model; 

import java.sql.*; 
import java.util.ArrayList; 

public class ViewCommitteeMember { 

private Connection connection; 
private ArrayList<CommitteeMember> members; 

public ViewCommitteeMember(){ 
members = new ArrayList<CommitteeMember>(); 
makeConnection(); 
} 

public void viewMembers(){ 
String query = "SELECT `committee_member`.`member_CAN#`, `member`.`first_name`,   `member`.`last_name`, `committee_member`.`member_status`, `committee_member`.`start_year`, `committee_member`.`end_year`, `committee_member`.`added_notes` FROM committee_member LEFT JOIN member ON `committee_member`.`member_CAN#` = `CAN#`"; 

PreparedStatement ps; 
try { 
ps = connection.prepareStatement(query); 

    ResultSet rs = ps.executeQuery(); 

    while (rs.next()){ //while the query is running, loop through all of the members 
    CommitteeMember member = new CommitteeMember(); //create a new member for each entry so info may be displayed 
    member.setID(rs.getInt(1)); //pulls the ID 
    member.setFirstname(rs.getString(2)); 
    member.setLastname(rs.getString(3)); 
    member.setMemStat(rs.getString(4)); //pulls the status 
    member.setStartYear(rs.getInt(5)); //pulls the start year 
    member.setEndYear(rs.getInt(6)); //pulls the end year 
    member.setNotes(rs.getString(7)); //pulls the additional notes 

    members.add(member); //add the member to the array list "members" 
    } 


    } catch (SQLException e) { 
// TODO Auto-generated catch block 
    e.printStackTrace(); 

} finally { 
    this.closeConnection(); 
} 
} 

    private void makeConnection(){ 
    // get connection 
    String url = "jdbc:mysql://localhost:3306/committee_database"; 
    String user = "root"; 
    String pwd = "coolman"; 
    try { 
    connection = DriverManager.getConnection(url, user, pwd); 
    } catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    } 

    private void closeConnection(){ 
try { 
    connection.close(); 
    } catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    } 

    /** 
    * @return the agents 
    */ 
    public ArrayList<CommitteeMember> getMembers() { //list of all the members 
    return members; 
    } 



    } 

Répondre

0

Connection conn = null;

Class.forName("com.mysql.jdbc.Driver").newInstance(); 
String jdbcURL="jdbc:mysql://localhost:3306/jsp"; 
conn = DriverManager.getConnection(jdbcURL,"root", ""); 

PreparedStatement psSelectRecord=null; 
ResultSet rsSelectRecord=null; 
String sqlSelectRecord=null; 

sqlSelectRecord="SELECT s.iEmpID, s.sStaffName, s.sStaffDept, s.iStaffPhone,"+ 
        "d.sAddress FROM staff_register s " + 
         "left join staff_details d on d.iEmpID=s.iEmpID";  

psSelectRecord=conn.prepareStatement(sqlSelectRecord); 
rsSelectRecord=psSelectRecord.executeQuery(); 

c'est l'échantillon de se joindre à gauche essayer ..

+0

Hmm, merci pour l'aide à ce jour. J'ai restructuré ma requête de sorte qu'elle ressemble maintenant à ceci: "SELECT m.CAN #, m.first_name, m.last_name", + "cm.member_status, cm.start_year, cm.end_year, cm.added_notes" + "FROM member_cembre cm LEFT JOIN membre m ON m.CAN # = cm.member_CAN # "; mais ça ne marche toujours pas, j'obtiens la même erreur: Table inconnue 'committee_member' dans la liste des champs –

0

utilisation comme alias:

String query = "SELECT cm.member_CAN#, m.first_name, m.last_name, 
cm.member_status, cm.start_year, cm.end_year, cm.added_notes 
FROM committee_member cm LEFT JOIN member m ON cm.member_CAN# = m.CAN#";