发表于: 2018-03-31 19:54:26

1 641


小白学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工具类)




代码繁多,劳烦师兄批阅。。


返回列表 返回列表
评论

    分享到