发表于: 2018-03-31 19:54:26
1 640
小白学java第十六天
今天完成的事情:看了师兄的指导今天学了封装jdbc的工具类,处理了出现的几个问题,代码如下
工具类:
package com.vii.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;
/**
* 数据库操作工具类
* @author lamp
*
*/
public class DBUtils {
//数据库连接地址
public static String URL;
//用户名
public static String USERNAME;
//密码
public static String PASSWORD;
//mysql的驱动类
public static String DRIVER;
private static ResourceBundle rb = ResourceBundle.getBundle("com.vii.jdbc.db-config");
private DBUtils(){}
//使用静态块加载驱动程序
static{
URL = rb.getString("jdbc.url");
USERNAME = rb.getString("jdbc.username");
PASSWORD = rb.getString("jdbc.password");
DRIVER = rb.getString("jdbc.driver");
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//定义一个获取数据库连接的方法
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("获取连接失败");
}
return conn;
}
/**
* 关闭数据库连接
* @param rs
* @param stat
* @param conn
*/
public static void close(ResultSet rs,Statement stat,Connection conn){
try {
if(rs!=null)rs.close();
if(stat!=null)stat.close();
if(conn!=null)conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
连接数据库的属性文件:
jdbc.url=jdbc:mysql://localhost:3306/zyy?useSSL=true
jdbc.username=root
jdbc.password=8520963.
jdbc.driver=com.mysql.jdbc.Driver
定义一个Person类:
package com.vii.jdbc;
public class Person {
private int id;
private String username;
private int age;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Person(int id, String username, int age, String password) {
super();
this.id = id;
this.username = username;
this.age = age;
this.password = password;
}
public Person(String username, int age, String password) {
super();
this.username = username;
this.age = age;
this.password = password;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Person [id=" + id + ", username=" + username + ", age=" + age
+ ", password=" + password + "]";
}
}
写一个测试类:
package com.vii.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test {
public static void main(String[] args) {
Person p = new Person();
p = findById(1);
System.out.println(p);
}
/**
* 查询的方法
*/
public static Person findById(int id){
Person p =null;
//通过工具类获取数据库连接
Connection conn = DBUtils.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select username,age,password from user where id=?";
try {
ps = conn.prepareStatement(sql);
//设置占位符对应的值
ps.setInt(1, id);
rs = ps.executeQuery();
if(rs.next()){
p = new Person();
p.setUsername(rs.getString(1));
p.setAge(rs.getInt(2));
p.setPassword(rs.getString(3));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
//通过工具类关闭数据库连接
DBUtils.close(rs, ps, conn);
}
return p;
}
}
明天计划的事情:(编写DAO)
遇到的问题:
遇到了错误Exception in thread"main" java.lang.ExceptionInInitializerError
这个异常是由于类加载过程中静态块初始化过程失败所导致的。由于它出现在负责启动程序的主线程中
修改了static中的错误参数得以解决
遇到了错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column
原因是把参数引过来的语句错误"+ username +"写错
还有没加useSSL等错误都逐一解决忘截图了。。
收获:(学习了封装jdbc工具类)
代码繁多,劳烦师兄批阅。。
评论