jdbc的学习之路(三)

有几个问题

1)存在硬编码(usernamet和password, url和classnameDriver)随时会改

2)只要一次加载class文件就好了,每次操作都加载文件

3)connection对象每次查询操作时都要创建,很浪费资源

4)关闭资源代码长而且没有技术含量(dry原则44)

5)拼接sql语句很恶心

解决方案()

1)用配置文件存储username和password(

在项目中创建resourse文件夹,再创db.properties文件存储项目的datasourse配置信息)

2)在项目中创建包util,再创建Jdbcutil类(即jdbc的工具类)

在static代码中加载字节码

3)在Jdbcutil类中创建方法getconn()获取connection对象和使用druid数据库连接池

4)在Jdbcutil类中创建方法close()用于关闭资源

5)用preparestatement代替statement

package util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

public class Jdbcutil {
	public static DataSource ds=null;
	static {
		try {
			Properties p=new Properties();
			InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
			p.load(in);
			Class.forName(p.getProperty("driverClassName"));
			ds=DruidDataSourceFactory.createDataSource(p);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	public  static Connection getconn() throws SQLException {
		return ds.getConnection();
	}
	public static  void close(Connection conn,Statement sta,ResultSet rs) {
		// TODO Auto-generated method stub
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally {
			try {
				if (sta != null) {
					sta.close();
				}
			} catch (Exception e2) {
				// TODO: handle exception
			}finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (Exception e3) {
					// TODO: handle exception
				}
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/wzxsb123/article/details/82724571