JDBC连接mysql

1、创建项目

jar包下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java?cf_chl_captcha_tk=pmd_0Hlhf0sFkSa0kuykrBJ9W.Ep8tawCh0cl7Gr72sG8fo-1631537827-0-gqNtZGzNAxCjcnBszQiR

1.1、将jdbc的jar包导入到lib文件夹下

JDBC连接mysql

1.2、将jar包添加到项目的库中

JDBC连接mysql

1.3、jdbc连接数据库步骤

import javax.xml.transform.Result;
import java.lang.*;
import  java.sql.*;
public class jdbcDemo1 {
    public static void main(String[] args) {
        try{
            //1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.用户信息和url
            String url="jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
            String userName="root";
            String password="951731";
            //3.连接数据库 connection代表数据库对象
            Connection connection=DriverManager.getConnection(url,userName,password);
            //4.创建statement对象来执行sql对象
            Statement st=connection.createStatement();
            String sql="select * from users";
            //5.ResultSet对象用来存放sql语句执行的结果
            ResultSet resultSet=st.executeQuery(sql);  
            //如果是查询操作用executeQuery(sql)方法,如果是增删改操作统一为executeUpdate(sql)方法,execute()方法能执行任何语句
            while(resultSet.next()){  //ResultSet对象指针只想第一条数据每next一次指针下移
                System.out.print(resultSet.getInt("id"));   //如果知道查询的字段类型就用get对应字段类型,如果不知道则可都用getObject()
                System.out.print(resultSet.getString("name"));
                System.out.print(resultSet.getString("password"));
                System.out.print(resultSet.getString("email"));
                System.out.print(resultSet.getDate("birthday"));
                System.out.println();
            }
            //6.释放连接
            resultSet.close();
            st.close();
            connection.close();

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }catch (SQLException sq){
            sq.getErrorCode();
        }
    }
}

1.4、ResultSet对象的常用方法

1 resultSet.beforeFirst(); //指针移动到最前面
2 resultSet.afterLast(); //指针移动到最后面
3 resultSet.next(); //指针移到下一个数据
4 resultSet.previous(); //指针移到前一行
5 resultSet.absolute(row); //指针移动到指定的第row行

2.PrepareStatement方法

​ 以上方法用的是Statement对象来执行sql语句,然而这种方法并不安全,为解决这种问题,可以使用PreparedStatement接口实现对数据库表内容的增删改操作,在现实的开发中也常用PreparedStatement接口而不是Statement接口进行增删改操作:使用PreparedStatement对于代码的可维护性和可读性提高了;使用PreparedStatement尽最大可能提高性能;最重要的一点是极大地提高了安全性。可以防止数据库的注入问题。

​ PreparedStatement接口继承了Statement的所有功能。另外它还整合一整套getXXX()和setXXX()方法,用于对值得获取和输入设置。同时,它还修改了三个方法execute、executeQuery、executeUpdate使它们不需要参数。这些方法的Statement形式,不应该再用于PreparedStatement对象。

​ PreparedStatement中的方法摘要:

​ 1、executeQuery():在此PreparedStatement对象中执行SQL语句,并返回该查询生成的ResultSet对象。

​ 2、executeUpdate():在此PreparedStatement对象中执行SQL语句,该语句必须是一个SQL数据操作语言(Date Manipulation Language,DML)语句,比如

​ insert、update、delete语句;或者是无返内容的SQL语句,比如DDL语句。

​ 3、execute():在此PreparedStatement对象中执行SQL语句,该语句可以是任何种类的SQL语句。

package com.zhao.les4;
import java.text.SimpleDateFormat;
import  java.util.*;
import java.sql.*;
import java.util.Date;

public class jd {
    public static void main(String[] args) {
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8&";
            String userName="root";
            String password="951731";
            Connection connection= DriverManager.getConnection(url,userName,password);
            //sql语句中要输入的值用占位符?代替。在创建完PrepareStatement对象后用set???()方法传入
            String sql="insert into users(id,name,password,email,birthday) values(?,?,?,?,null)";
            //与Statement对象不同,PrepareStatement需要在创建对象时传入sql语句,对sql语句进行预编译
            PreparedStatement pstm=connection.prepareStatement(sql);
            pstm.setInt(1,6); //第一个参数代表上边sql语句的第几个需要传入的值,第二个参数代表传入的值
            pstm.setString(2,"nidie");
            pstm.setString(3,"999999");
            pstm.setString(4,"zhao@qq.com");
            int i=pstm.executeUpdate();
            if(i>0){
                System.out.println("插入成功");
            }else{
                System.out.println("插入失败");
            }
            String sql2="select * from users";
            PreparedStatement pstm2=connection.prepareStatement(sql2);
            ResultSet rs=pstm2.executeQuery();
            while(rs.next()){
                System.out.println(rs.getInt("id"));
                System.out.println(rs.getString("name"));
                System.out.println(rs.getString("password"));
                System.out.println(rs.getString("email"));
                System.out.println(rs.getDate("birthday"));
            }
            rs.close();
            pstm2.close();
            pstm.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

//注意sql语句一定检查是否正确,本人就因为sql语句错误而找了好久错误
上一篇:第一个JDBC程序


下一篇:JDBC理论笔记