hp培训之JDBC优化

 1.      写一个java程序对数据库进行增,删,改,查操作

2.      优化程序

a.     使用DAO类优化程序(接口)

b.     使用常量优化程序(连接字符串的类)

c.     使用util类优化程序(关闭类)

 

package com.training.dao;

import java.sql.SQLException;

public interface StudentDao {
	 void insert(String sql) throws SQLException;
	 void update(String sql);
	 void delete(String sql);
	 void select(String sql);
}

 

 

package com.training.dapImpl;

import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.training.util.JdbcUtil;
import com.training.util.ResultSetUtil;
import com.training.dao.StudentDao;

public class StudentDaoImpl implements StudentDao{
	public void insert(String sql) throws SQLException
	{
		Connection con = null;
		Statement st = null;

		try
		{
			con = JdbcUtil.getConnection();
			st = con.createStatement();
			//String sql = "insert into student(id, name, course) values(100, 'allan', 'some course')";
			System.out.println(sql);
			st.executeUpdate(sql);			
		}catch(Exception e)
		{
			e.printStackTrace();
			throw new SQLException(e.getMessage());
		}finally
		{			
			JdbcUtil.close(st, con);
		}
	}
	
	public void update(String sql)
	{
		Connection con = null;
		Statement st = null;

		try
		{
			con = JdbcUtil.getConnection();
			st = con.createStatement();
			//String sql = "update student set name='new name' where id=100";
			st.executeUpdate(sql);			
		}catch(Exception e)
		{
			e.printStackTrace();
			throw new RuntimeException(e.getMessage());
		}finally
		{			
			JdbcUtil.close(st, con);
		}
	}
	
	public void delete(String sql)
	{
		Connection con = null;
		Statement st = null;

		try
		{
			con = JdbcUtil.getConnection();
			st = con.createStatement();
			//String sql = "delete from student where id=100";
			System.out.println(sql);
			st.executeUpdate(sql);			
		}catch(Exception e)
		{
			e.printStackTrace();
			throw new RuntimeException(e);
		}finally
		{			
			JdbcUtil.close(st, con);
		}
	}
	
	public void select(String sql)
	{
		Connection con = null;
		Statement st = null;
		ResultSet rs = null;
		
		
		try
		{
			con = JdbcUtil.getConnection();
			st = con.createStatement();
			//String sql = "select * from student";
			System.out.println(sql);
			rs = st.executeQuery(sql);
			ResultSetUtil.printRS(rs);
			
			//注意ResultSet和ResultSetMetaData的区别
//			while(rs.next())
//			{
//				System.out.print("sno=" + rs.getInt("sno"));
//				System.out.print(",name=" + rs.getString("name"));
//				System.out.print(",sex=" + rs.getString("sex"));
//				System.out.print(",age="+rs.getInt("age"));
//				System.out.print(",dept="+rs.getString("dept"));
//				System.out.println("");
//			}
		}catch(Exception e)
		{
			e.printStackTrace();
			throw new RuntimeException(e);
		}finally
		{
			JdbcUtil.close(rs, st, con);
		}
	}
}


 

 

package com.training.util;

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

public class JdbcUtil {
	public static void close(Statement st, Connection con)
	{
		try
		{
			st.close();
		}catch(Exception e)
		{
		}
		
		try
		{
			con.close();
		}catch(Exception e)
		{
		}
	}
	
	public static void close(ResultSet rs, Statement st, Connection con)
	{
		try
		{
			rs.close();
		}catch(Exception e)
		{
		}
		close(st, con);
	}
	
	public static Connection getConnection() throws Exception
	{
		Class.forName(SqlConstant.DB_NAME);
		return DriverManager.getConnection(SqlConstant.DB_URL, SqlConstant.DB_USER_NAME, SqlConstant.DB_PASSWORD);
	}
}


 

package com.training.util;

import java.sql.*;

public class ResultSetUtil {
	public static void printRS(ResultSet rs) throws SQLException
	{
		ResultSetMetaData rsmd = rs.getMetaData();
		int colCount = rsmd.getColumnCount();
		
		while(rs.next())
		{
			for(int i = 1; i <= colCount; i++)
			{
				if(i > 1)
				{
					System.out.print(",");
				}
				String name = rsmd.getColumnName(i);
				String value = rs.getString(i);
				System.out.print(name + "=" + value);
			}
			System.out.println();
		}
	}
}

 

 

package com.training.util;

public class SqlConstant {
	public static final String DB_NAME = "com.mysql.jdbc.Driver";
	public static final String DB_URL = "jdbc:mysql://localhost:3306/test";
	public static final String DB_USER_NAME = "root";
	public static final String DB_PASSWORD = "admin";
}



 

 

package com.training.jdbc;

import com.training.dao.StudentDao;
import com.training.dapImpl.StudentDaoImpl;

public class SecondMySqlJdbc {
	public static void main(String[] args) {
		StudentDao sd = new StudentDaoImpl();
		try {
			//String sql="select * from student";
			//sd.insert();
			//sd.update();
			//sd.delete();
			sd.select("select * from student");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值