Передача SQL-запроса из рабочей среды в класс .java - PullRequest
0 голосов
/ 14 декабря 2010

Я пытаюсь перенести SQL-запрос в Java из своего рабочего места. Я написал этот запрос в инструментальной среде MySQL, и он отлично работал с желаемыми результатами.

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 участник ON committee_member. member_CAN# = CAN#

Вот мой код класса .java. Я пытаюсь распечатать таблицу, которая отображает эту информацию. Я продолжаю получать сообщение об ошибке «Неизвестная таблица 'Committee_member' в списке полей» в eclipse, поэтому я предполагаю, что мой синтаксис запроса неправильный.

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;
  }



  }

Ответы [ 2 ]

0 голосов
/ 14 декабря 2010

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();

это пример левого соединения, попробуйте ..

0 голосов
/ 14 декабря 2010

Используйте псевдоним, например:

    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#";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...