myeclipseでデータベースsqlyogに接続する方法

9042 ワード

事前にsqlyogでデータベースを新規作成し、テーブルを作成します.
次にmyeclipseを使用してWebサービスプロジェクトを新規作成し、cn.edu.hpu.serviceの4つのパッケージをそれぞれ作成します.
                 cn.edu.hpu.servlet,
                 cn.edu.hpu.test,
                 cn.edu.hpu.util,
次に、最初のパッケージにオブジェクトを作成します(本稿では、簡単な学生データベースを作成します).
 コードは次のとおりです.
package cn.edu.hpu.jdbc.model;

public class Student {
      private int id;
      private String name;
      private String tel;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
      
}

2つ目のパッケージには、2つのファイルがあります.1つはStudentManager抽象インタフェース、もう1つはStudentManagerImplで、StudentManagerインタフェースを実装します.
コードは次のとおりです.
package cn.edu.hpu.jdbc.service;

import java.util.List;
import cn.edu.hpu.jdbc.model.Student;
public interface StudentManager {

    public List<Student> getStudents();
    public boolean add(Student stu);
    public boolean del(int id);
    public boolean update(Student stu);

    public Student getStudentById(int id);
}
package cn.edu.hpu.jdbc.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import cn.edu.hpu.jdbc.model.Student;
import cn.edu.hpu.jdbc.util.DBOperator;


public class StudentManagerImpl implements StudentManager{
     public boolean add(Student stu){
    	 boolean flag=false;
    	 
    	 Connection conn = null;
    	 PreparedStatement pst = null;
    	 try{
    		 conn = DBOperator.getConnection();
    		 String sql = "insert into student_xinxi(name,tel) values(?,?)";
    		 pst = conn.prepareStatement(sql);
    		 pst.setString(1,stu.getName());
    		 pst.setString(2,stu.getTel());
    		 
    		 int rows = pst.executeUpdate();
    		 if(rows > 0){
                 flag = true;    			 
    		 }
    	 }catch(Exception ex){
    		 ex.printStackTrace();
         }finally{
        	 DBOperator.close(pst,conn);
         }
    	 return flag;
}
    public boolean del(int id){
    	boolean flag = false;
        Connection conn = null;
        PreparedStatement pst = null;
        
        try{
        	conn = DBOperator.getConnection();
        	String sql = "delete from student_xinxi where id=?";
        	pst = conn.prepareStatement(sql);
        	pst.setInt(1, id);
        	
        	int rows = pst.executeUpdate();
        	if(rows > 0){
        		flag=true;
        	}
        }catch(Exception ex){
        	ex.printStackTrace();
        }finally{
        	DBOperator.close(pst,conn);
        }
        return flag;
    }
	public List<Student> getStudents(){
		List<Student> list = new ArrayList<Student>();
		
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		
		try{
			conn = DBOperator.getConnection();
			String sql = "select * from student_xinxi";
			st = conn.createStatement();
			rs = st.executeQuery(sql);
			
			while(rs.next()){
				Student stu = new Student();
				stu.setId(rs.getInt("id"));
				stu.setName(rs.getString("name"));
				stu.setTel(rs.getString("tel"));
				
				list.add(stu);
			}
		} catch(Exception ex) {
			ex.printStackTrace();
			
		}finally{
			DBOperator.close(rs,st,conn);
		}
		
		return list;
	}
    public boolean update(Student stu){
    	boolean flag = false;
    	Connection conn = null;
    	PreparedStatement pst = null;
    	
        try{
        	conn = DBOperator.getConnection();
        	String sql = "update student_xinxi set name=?,tel=? where id=?";
        	pst = conn.prepareStatement(sql);
        	pst.setString(1, stu.getName());
        	pst.setString(2, stu.getTel());
        	pst.setInt(3,stu.getId());
        	
        	int rows = pst.executeUpdate();
        	if(rows >0){
        		flag=true;
        	}
        } catch(Exception ex){
        	ex.printStackTrace();
        	
        } finally{
        	DBOperator.close(pst,conn);
        } 
        return flag;
    }		
    public Student getStudentById(int id){
    	Student stu = new Student();
    	
    	Connection conn = null;
    	Statement st = null;
    	ResultSet rs = null;
    	
    	try {
    		conn = DBOperator.getConnection();
    		String sql ="select * from student_xinxi where id=" + id;
    		st = conn.createStatement();
    		rs = st.executeQuery(sql);
    		if(rs.next()){
    			stu.setId(rs.getInt("id"));
    			stu.setName(rs.getString("name"));
    			stu.setTel(rs.getString("tel"));
    		    }
    	    } catch (Exception ex){
    	    	ex.printStackTrace();
               DBOperator.close(rs,st,conn);
    	    }
    	return stu;
    }
}

3つ目のパッケージにはテストのために書かれています.
テスト方法は次のとおりです.
テストの追加:
  
package cn.edu.hpu.jdbc.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class AddTest {
	public static void main(String[] args) throws Exception {
   		
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root","123");
    
    String sql = "insert into student_xinxi(name,tel) values(?,?)";
    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setString(1,"  ");
    pst.setString(2,"     ");
    pst.executeUpdate();
    System.out.println("      !");
	}
}

削除テスト:
package cn.edu.hpu.jdbc.test;

import cn.edu.hpu.jdbc.service.StudentManager;
import cn.edu.hpu.jdbc.service.StudentManagerImpl;

public class DelTest {
	public static void main(String[] args) {
       StudentManager dao = new StudentManagerImpl();
       boolean flag = dao.del(2);
       if(flag){
          System.out.println("  !");
       }else{
    	   
    	   System.out.println("  !");
       }
}
}

接続テスト:
package cn.edu.hpu.jdbc.test;

import java.sql.Connection;

import cn.edu.hpu.jdbc.util.DBOperator;

public class ConnectionTest {
	public static void main(String[] args) {
		
     Connection conn = DBOperator.getConnection();
     if(conn != null)
    	System.out.println("      !!");
   
	}    	 
}
    	

テストの更新:
package cn.edu.hpu.jdbc.test;

import cn.edu.hpu.jdbc.model.Student;
import cn.edu.hpu.jdbc.service.StudentManager;
import cn.edu.hpu.jdbc.service.StudentManagerImpl;

public class UpdateTest {
      public static void main(String[] args) {
		StudentManager dao = new StudentManagerImpl();
		Student stu = dao.getStudentById(1);
		stu.setName("  ");
		stu.setTel("99991");
		boolean flag = dao.update(stu);
		if(flag)
			System.out.println("  !");
		else
			System.out.println("  !");
	}
}

データテストの取得:
package cn.edu.hpu.jdbc.test;

import cn.edu.hpu.jdbc.model.Student;
import cn.edu.hpu.jdbc.service.StudentManager;
import cn.edu.hpu.jdbc.service.StudentManagerImpl;

public class GetTest {
      public static void main(String[] args) {
		StudentManager dao = new StudentManagerImpl();
		Student stu = dao.getStudentById(3);
		if(stu != null){
			System.out.println("  !");
			System.out.println("id:" + stu.getId());
			System.out.println("  :" + stu.getName());
			System.out.println("  :" + stu.getTel());
		}
	}
}

次に最も重要なステップ、すなわちSQLyogに接続することです.これは最も重要なステップです.私はこのファイルを最後のパッケージに構築しました.
コードは次のとおりです.
package cn.edu.hpu.jdbc.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class DBOperator {
    private final static String driver = "com.mysql.jdbc.Driver";
    private final static String url = "jdbc:mysql://localhost:3306/student";//        ,             
static{
	try{
		Class.forName(driver);
	 }   catch (ClassNotFoundException e){
		e.printStackTrace();
	 }
}
public static Connection getConnection(){
           Connection conn = null;
      try {
    	  conn = DriverManager.getConnection(url,"root","123");//     ,   ,  ,      
      }catch (SQLException e){
    	  e.printStackTrace();
      }
      return conn;
}
public static void close(ResultSet rs, Statement st, Connection conn){
	try{
		if(rs != null){
		    rs.close();
		}
		if(st != null){
			st.close();
		}
		if(conn != null){
			conn.close();
		}
	}   catch(Exception ex){
	  ex.printStackTrace();
 }
}
	public static void close(Statement st, Connection conn){
		close(null,st,conn);
	}
}

これまでずっとこの問題が分からなかったが,今は分かった.