JDBC工具类的两种导入方式+使用JDBC进行增删改查

方式1:简单的jar包对象载入

最普通的方式为直接调用,如下所示

public class JDBCUTILSdemo {

    private  JDBCUTILSdemo() {}
    private static Connection con;
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            
            String url = "jdbc:mysql://localhost:3306/demo?serverTimezone=UTC";
            String username = "root";
            String password = "123456";
            
             con = DriverManager.getConnection(url, username,password);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            throw new RuntimeException(e+"failed connection!");
        }
    }
    public static Connection getConnection() {
        return con;
    }

这种方式提供的工具类缺点在于里面的参数需要自己进入jdbc的工具包类对象进行修改,比较繁琐

方式2使用properties配置文件

开发中获得的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。通常情况下我们习惯使用properties文件,此文件作如下要求:

1.文件位置:任意,建议src下

2.文件名称:任意,扩展名为properties

3.文件内容:一行一组数据,格式是“key = value”

在加载配置文件时,我们使用JDK提供的工具类ResourceBundle加载properties文件,ResourceBundle提供getBundle()方法用于只提供properties文件即可,之后使用getString(key)通过key获得value的值。

代码写法:

public class JdbcUtils{

            private static String driver;

            private static String url;

            private static String user;

            private static String password;

//配置文件只需要加再一次,提供静态代码,当前类被加载到内存执行。

static{

ResourceBundle bundle = ResourceBundle.getBundle(“配置文件名称”);

driver = bundle.getString("配置文件内的对应的key值");

url = bundle.getString("配置文件内的对应的key值");

user = bundle.getString("配置文件内的对应的key值");

password = bundle.getString("配置文件内的对应的key值");

}

}

实现增删改查的一般模板:

conn = JdbcUtils.getConnection();//1.获得连接

st = conn.createStatement(); //2.获得语句执行者

int r = st.executeUpdate("sql语句")//3.执行语句

注意事项:1.增删改等改动数据库的表的操作要使用executeUpdate,而查询操作则使用executeQuery。

   2.prepareStatement与createStatement的区别               

prepareStatement 提供预编译SQL语句,可以用"?" 来替换需要改变的参数值,类似于正则化 SQL查询语句。

createStatement则不提供预编译SQL,需要实时executeQuery(sqlStr) 来访问数据库。 因此,prepareStatement可以多次使用,提高访问数据库的效率。
 

猜你喜欢

转载自blog.csdn.net/qq_29660957/article/details/88531512