1.导包
1.根据数据库的版本进行导入。
可以去maven官网下载相应MySql版本的jar包,进行导入
网址:https://mvnrepository.com
2.编写常量(DRIVERCLASSNAME;URL;USERNAME;PASSWORD)
2.1. DRIVERCLASSNAME
----MySql为1.5版本的DRIVERCLASSNAME: com.mysql.jdbc.Driver
-----MySql为1.5版本以后的DRIVERCLASSNAME: com.mysql.cj.jdbc.Driver
2.2.URL
5.0:的URL地址:
private static final String URL = "jdbc:mysql://localhost:3306/数据库名称"
8.0:注意加时区。
private static final String URL = "jdbc:mysql://localhost:3306/数据库名称?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true";
2.3. USERNAME:连接数据库的用户名
2.4. PASSWORD:连接数据库所用的密码
3.加载驱动
Class.forName(DRIVERCLASSNAME);
如果未加载会报错:
ClassNotFoundExecption
4.获取连接
1.实例化Connection对象。
Connection conn =DriverManager.getConnection(URL,USER,PASSWORD);
5.编写sql语句,返回字符型。
例如: String sql = "update user set nowtime = ? where uid = ?";
(此处注意Sql语句的编写出错)
6.创建可以执行sql语句的对象。(注意Statement与PrepareStatement区别)
1.Statement 需要完整的sql语句,而且每执行一次executeXXXX方法都需要给该方法sql参数,也就意味着每执行一次,就会重新编译一次。
2.PrepareStatement 可以使用问号做等待输入的参数,在preparestatement创建的时候,就会将sql语句进行预处理,从而
达到在执行executeXXXX方法只需要再填值就可以了,从而达到节省资源的目的。
注意:setxxx 1 是sql语句从左到右的第一个问号
getxxx 1 从查询结果中找到第一列。
7.执行sql语句。
executeUpdate 更新操作。 返回影响行数
executeQuery 查询操作。 返回查询结果集。
8.关闭资源
1.resultset
2.preparestatement
3.关闭连接对象connection
实例:
import java.sql.*;//java.sql包下所有类都导入。 import java.util.Date; import java.util.Scanner; public class Test03 { private static final String DRIVERCLASSNAME="com.mysql.cj.jdbc.Driver"; serverTimezone可以设置为北京时间GMT%2B8、上海时间Asia/Shanghai或者香港时间Hongkong //四个常量: private static final String URL = "jdbc:mysql://localhost:3306/shopping?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true"; private static final String USERNAME="root"; private static final String PASSWORD="123456"; public static void main(String[] args) { //控制台输入 System.out.println("请输入"); Integer uid = new Scanner(System.in).nextInt(); //连接对象:设置为null,进行资源关闭 Connection conn = null; //预编译对象 ResultSet re = null; try { //加载驱动 Class.forName(DRIVERCLASSNAME); //建立连接 conn = DriverManager.getConnection(URL,USERNAME,PASSWORD); //编写SQL语句 String sql = "update user set nowtime = ? where uid = ?"; //对SQL语句进行预编译;把不完整的sql语句放入jvm缓冲中。 PreparedStatement ps = conn.prepareStatement(sql); //setTimeStamp():年月日时分秒 //new Time(date.getTime()); //new TimeStamp(date.getTime()); //给不完整的sql语句的第一个问号赋值 ps.setTime(1,new java.sql.Time(new Date().getTime())); //给不完整的sql语句的第二个问号赋值 ps.setInt(2,uid); //预编译执行SQL语句,返回影响行数 int i = ps.executeUpdate(); System.out.println(i); } catch (Exception e) { e.printStackTrace(); }finally { //关闭资源 try{ if(re!=null){ re.close(); } if(conn != null){ conn.close(); } }catch (Exception e){ e.printStackTrace(); } } } }