JDBC连接数据库

package dao;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class JdbcTest {
    private String jdbcDriver;
    private String jdbcUrl;
    private String userName;
    private String password;
    private Properties pro;
    private Connection connection;
    private PreparedStatement preSt;

    public JdbcTest() {
        pro = new Properties();//key - value
        try {
            pro.load(new FileInputStream("D:\\Java\\代码\\jsp_demo\\src\\main\\resources\\db.properties"));
            jdbcDriver = pro.getProperty("jdbcDriver");
            jdbcUrl = pro.getProperty("jdbcUrl");
            userName = pro.getProperty("user");
            password = pro.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void getConnection() {
        try {
        //  通过反射加载驱动
            Class.forName(jdbcDriver);
           //JDbcUrl  确定某一个数据库   IP地址 端口号
            connection = DriverManager.getConnection(jdbcUrl, userName, password);
            connection.setAutoCommit(false);
            connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void insert() {
    //  预编译SQL
        String sql = "insert into user values(?,?);";
        try {
            preSt = connection.prepareStatement(sql);
            preSt.setString(1, "WELCOME");
            preSt.setInt(2, 99);
            int i = preSt.executeUpdate();
            System.out.println("修改了多少行: " + i);
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                connection.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
    }

    public void select() {
        String sql = "select * from user where password = ? and name = ?;";
        System.out.println(sql);
        try {
        //  给参数设值
            preSt = connection.prepareStatement(sql);
            preSt.setInt(1, 9);
            preSt.setString(2, "name or shortname");
            System.out.println(preSt);
            ResultSet resultSet = preSt.executeQuery();
            Savepoint point1 = connection.setSavepoint("point1");
            while (resultSet.next()) {
                System.out.println("name: " + resultSet.getString(1)
                        + " password: " + resultSet.getString(2)
                );
            }
        } catch (SQLException e) {
            try {
                connection.rollback();
//                connection.rollback(savePoint);
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }
    }

    public void commit() {
        try {
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void close() {
        try {
        //使用后关闭连接
            if (connection != null) {
                connection.close();
                connection = null; //gc 强引用
            }
            if (preSt != null) {
                preSt.close();
                preSt = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {

        JdbcTest jdbcTest = new JdbcTest();
        try {
            jdbcTest.getConnection();
            jdbcTest.insert();
        } finally {
            jdbcTest.commit();
            if (jdbcTest != null) {
                jdbcTest.close();
                jdbcTest = null;
            }
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值