Hibernate------>JDBC--->优化版连接(jdbcUtil工具)
来源:互联网 发布:钱咖淘宝返利 编辑:程序博客网 时间:2024/06/05 04:37
上一篇把基本的JDBC连接写了出来,但是你们会发现有很多重复的地方,这些重复的地方将他们打包至一个地方然后反射到主类文件即可达到优化效果!
1.写pro.txt文件(该文件是写出主文件重复的密码账户,数据库具体地址等信息)
user=root
password=samlin123
url=jdbc:mysql:///test_jdbc
(注意:千万不要加上任何一句多余的话,也不要把java语法带到这里来,否则运行会不成功)
2.编写jdbcUtil工具(该文件写出主文件中连接,释放资源的重复语句,(其中使用FileInputStream和Properties共同获取文件信息))
package JDBC_up;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class jdbcUtil {
private static String url=null;
private static String user=null;
private static String password=null;
private static Strign driver=null;
static{
Properties pro=new Properties();
try {
FileInputStream fis=new FileInputStream("./src/JDBC_up/pro.txt");//还可以通过 当前类.class.getResourceAsstream('/JDBC_up/pro.txt') (其实这种方法更为通用!!!!)
pro.load(fis);
} catch (IOException e) {
e.printStackTrace();
}
url = pro.getProperty("url");
user = pro.getProperty("user");
password=pro.getProperty("password");
driver=pro.getProperty("driver");
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接资源
public static Connection getConnection() throws Exception {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
//释放资源
public static void close(Connection conn,PreparedStatement pstmt) throws Exception {
if(pstmt!=null){
pstmt.close();
}
if(conn!=null){
conn.close();
}
}
public static void close(Connection conn,PreparedStatement pstmt,ResultSet rs) throws Exception {
if(rs!=null){
rs.close();
}
if(pstmt!=null){
pstmt.close();
}
if(conn!=null){
conn.close();
}
}
}
三,JDBC主类文件,功能:增删改查
package JDBC_up;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Jdbc_all {
public static void main(String[] args) throws Exception {
Connection conn = jdbcUtil.getConnection();
//增
String sql="insert into cba (id,player,salary) value(?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 2);
pstmt.setString(2, "易建联");
pstmt.setString(3, "60000000");
pstmt.executeUpdate();
//删
String sql1="delete from cba where id=?";
PreparedStatement pstmt1=conn.prepareStatement(sql1);
pstmt1.setInt(1, 2);
pstmt1.executeUpdate();
//改
String sql2="update cba set player=? where id=?";
PreparedStatement pstmt2=conn.prepareStatement(sql2);
pstmt2.setString(1, "姚明");
pstmt2.setInt(2,8);
pstmt2.executeUpdate();
//查
String sql3="select * from cba";
PreparedStatement pstmt3=conn.prepareStatement(sql3);
ResultSet rs = pstmt3.executeQuery(sql3);
while(rs.next()){
//获取字段1
int id = rs.getInt(1);
String player = rs.getString(2);
String salary = rs.getString(3);
System.out.println(id+player+salary);
}
jdbcUtil.close(conn, pstmt3);
}
}
编写jdbcutil时遇到的困难
1.properties文件一定要与jdbcUtil类一致.(user就不要打成username)
否则会导致:Access denied for user 'root1'@'localhost' (using password: YES)(一般来说using password:yes 指的是你有使用密码,但是密码不正确)
2.Access denied for user ''@'localhost' (using password: NO) 指的是你的账户,密码,Mysql地址不全面,密码根本用不上
3.优化JDBC,归纳出util工具的关键部分是:Class的getresourceAsStream和filestream联合起来取外部文件信息..
4.本人总是忘记写pstmt.setString(1,"易建联");或者pstmt.setint(1,1); 否则会导致 No value specified for parameter 1
5.java路径问题 fileinputstream的参数 ./ ---> 在普通的java项目当中(非web项目)代表项目根目录 一般./src这样表达
但是在web项目当中,则代表tomcat/bin目录
6.Connection conn = DriverManager.getConnection(url,user,password); 这个url 和 user 和 password 的顺序是固定的,不能颠倒
颠倒了则会报Access denied for user 'samlin123'@'localhost' (using password: YES)认为你的提交资料是全面的,但是你的密码不正确
- Hibernate------>JDBC--->优化版连接(jdbcUtil工具)
- JdbcUtil:JDBC工具类
- 在Eclipse中测试MySQL-JDBC(7)JDBC工具(JdbcUtil)类抽取 再优化
- 在Eclipse中测试MySQL-JDBC(15)c3p0配置文件对JDBC工具(JdbcUtil)类抽取 再优化
- Jdbcutil.java jdbc.properties
- 在Eclipse中测试MySQL-JDBC(6)JDBC工具(JdbcUtil)类抽取
- JDBCUtil工具类
- DBUtil工具类JdbcUtil
- JDBCUtil工具类(三)
- JDBCUtil工具类回顾
- Java-JDBCUtil工具类
- 开发JDBCutil工具类
- 分页工具类JdbcUtil
- 对jdbc操作工具类JdbcUtil的简单封装与应用
- hibernate jdbc连接
- Hibernate获取JDBC连接
- Hibernate JDBC 连接
- JDBC连接工具类
- 德州仪器TI CC2640R2F器件的命名规则
- [机器学习]机器学习之Python之NumPy数学库的介绍
- Dialog设置为点击空白处/点击按钮后 不消失
- MySQL中group_concat函数
- MySQL使用小坑总结(一)
- Hibernate------>JDBC--->优化版连接(jdbcUtil工具)
- swift 3.0 webview与JS的交互
- 对程序比较好的网站
- [译]Redis大冒险
- 微服务架构类型的未来到底是什么?(2017-02-22 Daniel Bryant)
- Android 6.0 运行时权限处理完全解析
- 【有容云干货-容器系列】Kubernetes调度核心解密:从Google Borg说起
- git使用tag恢复到以前的版本
- JAVA(2017-023-02)