자바 sql문 연동안돼요.. 도와주세요
-
게시물 수정 , 삭제는 로그인 필요
InputPane소스
-------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
//JDBC를 사용하기 위해 sava.sql 패키지를 import한다.
import java.sql.*;
import javax.sql.*;
import java.util.*;
public class InputPane extends JPanel implements ActionListener{
//JDBC관련 맴버
/*private String url = "jdbc:odbc:jdbc2";
private Connection con;
private Statement stmt;*/
//Swing관련 맴버
private JPanel p[];
private JLabel l[];
private JTextField tf[];
private JButton okb;
private JButton rsb;
public InputPane(){
//스윙 컴포넌트들을 배치한다.
setLayout(new GridLayout(8,1));
EtchedBorder ed = new EtchedBorder();
setBorder(ed);
p = new JPanel[8];
l = new JLabel[7];
tf = new JTextField[6];
l[0] = new JLabel("이 름 :");
l[1] = new JLabel("학번 :");
l[6] = new JLabel(" 과목명 | 학점 | 강의실 | 시간표 | 수강신청 ");
l[2] = new JLabel("컴퓨터구조 | 3 | a2142 | 월 234|");
l[3] = new JLabel("데이터통신 | 3 | a2031 | 화 234|");
l[4] = new JLabel("자료구조 | 2 | a8232 | 수 12 |");
l[5] = new JLabel("C언어 | 1 | a2031 | 목 5 |");
for(int i = 0; i<6; i++){
if(i==2){
p[7] = new JPanel();
p[7].add(l[6]);
add(p[7]);
}
tf[i] = new JTextField(10);
p[i] = new JPanel();
p[i].add(l[i]);
p[i].add(tf[i]);
add(p[i]);
}
p[6] = new JPanel();
okb = new JButton("저장하기");
okb.addActionListener(this);
rsb = new JButton("다시쓰기");
rsb.addActionListener(this);
p[6].add(okb);
p[6].add(rsb);
add(p[6]);
}
public void actionPerformed(ActionEvent ae){
String ae_type = ae.getActionCommand();
if(ae_type.equals(okb.getText())){
//저장하기 버튼이 클릭되었을 경우
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:jdboc";
Connection con = null;
Statement stmt = null ;
String query = "Insert into member(ID, name, com, dat, ja, c) values";
try{
//JDBC드라이버를 등록한다.
//커넥션으로부터 실제로 SQL쿼리를 실행시키기 위한
//Statement 객체를 얻어온다.
//실행시킬 SQL 쿼리문을 작성한다.
//MYsql에 한글이 바르게 입력되도록 하기 위해 8859_1로 인코딩한다.
query = query + " ' "+
new String(tf[0].getText().getBytes("KSC55601"), "8859_1")+ " ' ";
query = query + " ' "+ tf[1].getText() + " ', ";
query = query + " ' "+ tf[2].getText() + " ', ";
query = query + " ' "+ tf[3].getText() + " ', ";
query = query + " ' "+ tf[4].getText() + " ', ";
query = query + " ' "+ tf[5].getText() + " ', ";
//execute()메서드를 사용해서 쿼리를 실행시킨다.
Class.forName(driver);
con = DriverManager.getConnection(url, "master","java" );
stmt= con.createStatement();
stmt.executeUpdate(query);
System.out.println("데이터베이스 연결 성공~!");
//사용을 마친 statment 객체를 바로 닫는다.
stmt.close();
//더이상 수행할 작업이 없으므로 데이터베이스의 커넥션을 닫는다.
con.close();
}
catch(Exception e) {
// System.out.println("데이터베이스 연결 실패!av");
}
}
else if(ae_type.equals(rsb.getText())){
//텍스트 필드를 초기화한다.
for(int i=0; i<6; i++){
tf[i].setText(" ");
}
}
}
}
------------------
Score소스
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
public class Score extends JFrame{
private JTabbedPane tp;
private InputPane ip;
private SearchPane sp;
public Score(){
//프레입에 추가될 컴포넌트 초기화
tp = new JTabbedPane();
ip = new InputPane();
sp = new SearchPane();
//탭 추가
tp.addTab("수강신청", ip);
tp.addTab("수강확인", sp);
//TabbedPane을 프레임에 추가
getContentPane().add(tp);
setTitle("수강신청 관리 ");
}
public static void main(String args[]){
//프레임 객체를 생성하고 화면에 출력한다.
Score score = new Score();
Dimension d = new Dimension(350,450);
score.setSize(d);
score.setVisible(true);
score.show(true);
}
}
----------------------------------
SearchPane 소스
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.sql.*;
import javax.sql.*;
import java.util.*;
public class SearchPane extends JPanel implements ActionListener{
//jdbc관련 맴버
private String url = "jdbc:odbc:jdboc";
private Connection con;
private Statement stmt;
//Swing관련 맴버
private JPanel p[];
private JLabel l[];
private JTextField tf[];
private JButton okb;
private JButton rsb;
public SearchPane(){
setLayout(new GridLayout(9,1));
EtchedBorder eb = new EtchedBorder();
setBorder(eb);
p = new JPanel[8];
l = new JLabel[7];
tf = new JTextField[6];
l[0] = new JLabel("이 름 :");
l[1] = new JLabel("학번 :");
l[6] = new JLabel(" 과목명 | 학점 | 강의실 | 시간표 | 수강신청 ");
l[2] = new JLabel("컴퓨터구조 | 3 | a2142 | 월 234|");
l[3] = new JLabel("데이터통신 | 3 | a2031 | 화 234|");
l[4] = new JLabel("자료구조 | 2 | a8232 | 수 12 |");
l[5] = new JLabel("C언어 | 1 | a2031 | 목 5 |");
for(int i = 0; i<6; i++){
if(i==2){
p[7] = new JPanel();
p[7].add(l[6]);
add(p[7]);
}
tf[i] = new JTextField(10);
p[i] = new JPanel();
p[i].add(l[i]);
p[i].add(tf[i]);
add(p[i]);
}
tf[2].setEditable(false);
tf[3].setEditable(false);
tf[4].setEditable(false);
tf[5].setEditable(false);
/*tf[6].setEditable(false);
tf[7].setEditable(false);*/
p[6] = new JPanel();
okb = new JButton("신청조회");
okb.addActionListener(this);
rsb = new JButton("다시쓰기");
rsb.addActionListener(this);
p[6].add(okb);
p[6].add(rsb);
add(p[6]);
}
public void actionPerformed(ActionEvent ae){
String ae_type = ae.getActionCommand();
if(ae_type.equals(okb.getText())){
//저장하기 버튼이 클릭되었을 경우
try{
//JDBC드라이버를 등록한다.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//DriverManager로부터 커넥션을 얻어온다.
//MY-sql서버 : local
//ID : root
//Password :
con = DriverManager.getConnection(url, "master","java");
//커넥션으로부터 실제로 SQL쿼리를 실행시키기 위한
//Statement 객체를 얻어온다.
stmt = con.createStatement();
//SELECT 쿼리를 작성한다.
String query = "SELECT * FROM score WHERE name=";
query = query + " ' "+new String(tf[0].getText().getBytes(" KSC5601"), "8859_1");
query = query + " ' and snum= '" + tf[1].getText()+" ' ";
//executeQuery()메서드로 select문의 실행시키고 결과로 resultset객체를 받는다.
ResultSet rs = stmt.executeQuery(query);
//레코드가 있는지 검사
if(rs.next()){
tf[0].setText(new String(rs.getString("ID").getBytes("8859_1)"),"KSC5601"));
tf[1].setText(rs.getString(" name"));
tf[2].setText(" "+rs.getInt(" com"));
tf[3].setText(" "+rs.getInt(" dat"));
tf[4].setText(" "+rs.getInt(" ja"));
tf[5].setText(" "+rs.getInt(" c"));
/*tf[6].setText(" "+rs.getInt(" sum"));
tf[7].setText(" "+rs.getInt(" avg"));*/
}
stmt.close();
con.close();
}catch(Exception e) {e.printStackTrace();}
}
else if(ae_type.equals(rsb.getText())){
for(int i = 0; i<6; i++){
tf[i].setText(" ");
}
}
}
}
-------------------------------
이렇게 총 3개로 작성했는데 미치겠습니다. 분명이 다른걸로 하면 잘되는데 왜 이게 안되는지 모르겠습니다
데이터베이스는 엑세스로 사용했구여 컴터자체에서 연동설정이 안된다거나 그러진 않습니다. 다른걸로는 SQL문이잘돌아갔거든요(이거와 다른방식의 프로그램)
SQL문이잘못된건가요? InputPane 에서 막히는데,, 학번, 이름 과목명을 입력하고 수강신청을 클릭하면 꿈쩍도안함니다 아무반응이 없어요 .. 엑세스에서 파일열어서 확인해봐도 아무런데이터가 입력되지도않고 ..
도와주세요 ㅠ_ㅠ
InputPane소스
-------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
//JDBC를 사용하기 위해 sava.sql 패키지를 import한다.
import java.sql.*;
import javax.sql.*;
import java.util.*;
public class InputPane extends JPanel implements ActionListener{
//JDBC관련 맴버
/*private String url = "jdbc:odbc:jdbc2";
private Connection con;
private Statement stmt;*/
//Swing관련 맴버
private JPanel p[];
private JLabel l[];
private JTextField tf[];
private JButton okb;
private JButton rsb;
public InputPane(){
//스윙 컴포넌트들을 배치한다.
setLayout(new GridLayout(8,1));
EtchedBorder ed = new EtchedBorder();
setBorder(ed);
p = new JPanel[8];
l = new JLabel[7];
tf = new JTextField[6];
l[0] = new JLabel("이 름 :");
l[1] = new JLabel("학번 :");
l[6] = new JLabel(" 과목명 | 학점 | 강의실 | 시간표 | 수강신청 ");
l[2] = new JLabel("컴퓨터구조 | 3 | a2142 | 월 234|");
l[3] = new JLabel("데이터통신 | 3 | a2031 | 화 234|");
l[4] = new JLabel("자료구조 | 2 | a8232 | 수 12 |");
l[5] = new JLabel("C언어 | 1 | a2031 | 목 5 |");
for(int i = 0; i<6; i++){
if(i==2){
p[7] = new JPanel();
p[7].add(l[6]);
add(p[7]);
}
tf[i] = new JTextField(10);
p[i] = new JPanel();
p[i].add(l[i]);
p[i].add(tf[i]);
add(p[i]);
}
p[6] = new JPanel();
okb = new JButton("저장하기");
okb.addActionListener(this);
rsb = new JButton("다시쓰기");
rsb.addActionListener(this);
p[6].add(okb);
p[6].add(rsb);
add(p[6]);
}
public void actionPerformed(ActionEvent ae){
String ae_type = ae.getActionCommand();
if(ae_type.equals(okb.getText())){
//저장하기 버튼이 클릭되었을 경우
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:jdboc";
Connection con = null;
Statement stmt = null ;
String query = "Insert into member(ID, name, com, dat, ja, c) values";
try{
//JDBC드라이버를 등록한다.
//커넥션으로부터 실제로 SQL쿼리를 실행시키기 위한
//Statement 객체를 얻어온다.
//실행시킬 SQL 쿼리문을 작성한다.
//MYsql에 한글이 바르게 입력되도록 하기 위해 8859_1로 인코딩한다.
query = query + " ' "+
new String(tf[0].getText().getBytes("KSC55601"), "8859_1")+ " ' ";
query = query + " ' "+ tf[1].getText() + " ', ";
query = query + " ' "+ tf[2].getText() + " ', ";
query = query + " ' "+ tf[3].getText() + " ', ";
query = query + " ' "+ tf[4].getText() + " ', ";
query = query + " ' "+ tf[5].getText() + " ', ";
//execute()메서드를 사용해서 쿼리를 실행시킨다.
Class.forName(driver);
con = DriverManager.getConnection(url, "master","java" );
stmt= con.createStatement();
stmt.executeUpdate(query);
System.out.println("데이터베이스 연결 성공~!");
//사용을 마친 statment 객체를 바로 닫는다.
stmt.close();
//더이상 수행할 작업이 없으므로 데이터베이스의 커넥션을 닫는다.
con.close();
}
catch(Exception e) {
// System.out.println("데이터베이스 연결 실패!av");
}
}
else if(ae_type.equals(rsb.getText())){
//텍스트 필드를 초기화한다.
for(int i=0; i<6; i++){
tf[i].setText(" ");
}
}
}
}
------------------
Score소스
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
public class Score extends JFrame{
private JTabbedPane tp;
private InputPane ip;
private SearchPane sp;
public Score(){
//프레입에 추가될 컴포넌트 초기화
tp = new JTabbedPane();
ip = new InputPane();
sp = new SearchPane();
//탭 추가
tp.addTab("수강신청", ip);
tp.addTab("수강확인", sp);
//TabbedPane을 프레임에 추가
getContentPane().add(tp);
setTitle("수강신청 관리 ");
}
public static void main(String args[]){
//프레임 객체를 생성하고 화면에 출력한다.
Score score = new Score();
Dimension d = new Dimension(350,450);
score.setSize(d);
score.setVisible(true);
score.show(true);
}
}
----------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.sql.*;
import javax.sql.*;
import java.util.*;
public class SearchPane extends JPanel implements ActionListener{
//jdbc관련 맴버
private String url = "jdbc:odbc:jdboc";
private Connection con;
private Statement stmt;
//Swing관련 맴버
private JPanel p[];
private JLabel l[];
private JTextField tf[];
private JButton okb;
private JButton rsb;
public SearchPane(){
setLayout(new GridLayout(9,1));
EtchedBorder eb = new EtchedBorder();
setBorder(eb);
p = new JPanel[8];
l = new JLabel[7];
tf = new JTextField[6];
l[0] = new JLabel("이 름 :");
l[1] = new JLabel("학번 :");
l[6] = new JLabel(" 과목명 | 학점 | 강의실 | 시간표 | 수강신청 ");
l[2] = new JLabel("컴퓨터구조 | 3 | a2142 | 월 234|");
l[3] = new JLabel("데이터통신 | 3 | a2031 | 화 234|");
l[4] = new JLabel("자료구조 | 2 | a8232 | 수 12 |");
l[5] = new JLabel("C언어 | 1 | a2031 | 목 5 |");
for(int i = 0; i<6; i++){
if(i==2){
p[7] = new JPanel();
p[7].add(l[6]);
add(p[7]);
}
tf[i] = new JTextField(10);
p[i] = new JPanel();
p[i].add(l[i]);
p[i].add(tf[i]);
add(p[i]);
}
tf[2].setEditable(false);
tf[3].setEditable(false);
tf[4].setEditable(false);
tf[5].setEditable(false);
/*tf[6].setEditable(false);
tf[7].setEditable(false);*/
p[6] = new JPanel();
okb = new JButton("신청조회");
okb.addActionListener(this);
rsb = new JButton("다시쓰기");
rsb.addActionListener(this);
p[6].add(okb);
p[6].add(rsb);
add(p[6]);
}
public void actionPerformed(ActionEvent ae){
String ae_type = ae.getActionCommand();
if(ae_type.equals(okb.getText())){
//저장하기 버튼이 클릭되었을 경우
try{
//JDBC드라이버를 등록한다.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//DriverManager로부터 커넥션을 얻어온다.
//MY-sql서버 : local
//ID : root
//Password :
con = DriverManager.getConnection(url, "master","java");
//커넥션으로부터 실제로 SQL쿼리를 실행시키기 위한
//Statement 객체를 얻어온다.
stmt = con.createStatement();
//SELECT 쿼리를 작성한다.
String query = "SELECT * FROM score WHERE name=";
query = query + " ' "+new String(tf[0].getText().getBytes(" KSC5601"), "8859_1");
query = query + " ' and snum= '" + tf[1].getText()+" ' ";
//executeQuery()메서드로 select문의 실행시키고 결과로 resultset객체를 받는다.
ResultSet rs = stmt.executeQuery(query);
//레코드가 있는지 검사
if(rs.next()){
tf[0].setText(new String(rs.getString("ID").getBytes("8859_1)"),"KSC5601"));
tf[1].setText(rs.getString(" name"));
tf[2].setText(" "+rs.getInt(" com"));
tf[3].setText(" "+rs.getInt(" dat"));
tf[4].setText(" "+rs.getInt(" ja"));
tf[5].setText(" "+rs.getInt(" c"));
/*tf[6].setText(" "+rs.getInt(" sum"));
tf[7].setText(" "+rs.getInt(" avg"));*/
}
stmt.close();
con.close();
}catch(Exception e) {e.printStackTrace();}
}
else if(ae_type.equals(rsb.getText())){
for(int i = 0; i<6; i++){
tf[i].setText(" ");
}
}
}
}
-------------------------------
이렇게 총 3개로 작성했는데 미치겠습니다. 분명이 다른걸로 하면 잘되는데 왜 이게 안되는지 모르겠습니다
데이터베이스는 엑세스로 사용했구여 컴터자체에서 연동설정이 안된다거나 그러진 않습니다. 다른걸로는 SQL문이잘돌아갔거든요(이거와 다른방식의 프로그램)
SQL문이잘못된건가요? InputPane 에서 막히는데,, 학번, 이름 과목명을 입력하고 수강신청을 클릭하면 꿈쩍도안함니다 아무반응이 없어요 .. 엑세스에서 파일열어서 확인해봐도 아무런데이터가 입력되지도않고 ..
도와주세요 ㅠ_ㅠ
#자바 sql문