java连接mysql数据库

一.连接数据库mysql大致需要这六步:

1.导入驱动包:这里我使用的是mysql-connector-java-8.0.17.jar。

2.url和账户名密码:jdbc:mysql://<地址>:<端口>/<数据库>

3.获取连接:DriverManager.getConnection(url,user,pwd);

4.执行sql的Statement对象:connection.createSatement();

5.执行sql语句

6.释放连接

package com.ZhuanZhuan.DAL.Mysql;

import com.ZhuanZhuan.DAL.Dao.jiaoYiDao;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class MySql_jiaoYi_Dao implements jiaoYiDao{
    private static String url;
    private static String user;
    private static String pwd;
    private static String driver;
    static {
        initProperties();
    }
    //配置连接数据库的属性
    private static void initProperties(){
        //读取properties 文件的对象
        Properties properties = new Properties();
        //创建一个输入流,=当前类获取类加载后获取指定文件的输入流
        //当前类名.class => 获取当前对象所属的class对象
        //getClassLoader() => 获取该class对象的装载器,返回 ClassLoader类
        //类装载器负责从Java字符文件将字符流读入内存,并构造Class类对象,所以通过它可以得到一个文件的输入流。
        InputStream is = MySql_jiaoYi_Dao.class.getClassLoader().getResourceAsStream("db.properties");
        try{
            //加载properties文件里的信息,使用properties加载输入流的信息,
            properties.load(is);
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        url=properties.getProperty("url");
        user=properties.getProperty("user");
        pwd=properties.getProperty("pwd");
        driver=properties.getProperty("driver");
    }
    //打开连接
    public Connection openCon(){
        //数据库连接对象,这个对象封装了连接整个数据库信息的用户的各种信息
        Connection con = null;
        try{
            //加载驱动程序
            Class.forName(driver);
            //连接到具体的数据库的方法
            con = DriverManager.getConnection(url,user,pwd);
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        return con;
    }
    //关闭连接
    public void colseCon(Connection con, PreparedStatement pst,ResultSet rs){
        try{
            if (rs!=null)rs.close();
            if (pst!=null)pst.close();
            if (con!=null)con.close();
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
    //增删改
    @Override
    public int upDate(String sql,Object[] canSHu) {
        int jg =0;
        Connection con = openCon();
        try{
            //prepareStatement()会预先提交带占位符的sql到数据库进行预处理,提前生成执行计划。
            //当给定占位符参数真正执行sql时,执行引擎可以直接执行,效率更高一点。
            PreparedStatement pst = con.prepareStatement(sql);
            if (canSHu != null){
                for(int i=0;i<canSHu.length;i++){
                    //给sql语句传入参数
                    pst.setObject(i+1,canSHu[i]);
                }
            }
            //该方法用于执行sql语句,返回影响行数。
            jg = pst.executeUpdate();
            colseCon(con,pst,null);
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        return jg;
    }
    //查询
    @Override
    public ResultSet query(String sql,Object[] canShu) {
        //结果集对象
        ResultSet rs = null;
        Connection con = openCon();
        try{
            PreparedStatement pst = con.prepareStatement(sql);
            if (canShu != null){
                for (int i=0;i<canShu.length;i++){
                  pst.setObject(i+1,canShu[i]);
                }
            }
            rs = pst.executeQuery();
            //在这里关闭rs后,不能执行在逻辑层不能获取数据
            //colseCon(con,pst,rs);
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        return rs;
    }
}

在上面代码中执行sql语句的是PreparedStatement对象,也可以使用Statement对象该区别:

  1. preparedStatement在使用时只需编译一次,就可以运行多次,Statement每运行一次就编译一次,所以preparedStatement的效率更高
  2. preparedStatement需要的sql语句为用?(占位符)来替换,Statement所需要的sql语句为字符串拼接
  3. preparedStatement解决了sql注入的问题,Statement没有解决,因为preparedStatement有一个预编译的过程

下面这个是properties文件。储存连接数据库的配置信息。

properties文件是一种属性文件,这种文件以key=value格式存储内容。Java中可以使用Properties类来读取这个文件,

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jiaoYi_u?serverTimezone=GMT-8
user=root
pwd=2004

 这里的pwd是自己的密码,除了user外其他的都要改,根据自己电脑文件存放的路劲或数据库名。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zou_xi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值