java操作mysql数据库的基本使用
第一步:
通过反射加载驱动:
Class.forName("com.mysql.cj.jdbc.Driver");
这时需要处理ClassNotFoundException
加载mysql数据库驱动:(向下兼容)
- mysql5:com.mysql.jdbc.Driver
- mysql8:com.mysql.cj.jdbc.Driver
第二步:
设置连接的URL信息:
- useUnicode=true:可以显示中文
- characterEncoding=utf8:设置编码为utf-8
- useSSL=true:使用安全连接
- serverTimezone=Asia/Shanghai:设置mysql的时区,mysql8默认时区是美国
第三步:
创建连接对象:
Connection conn = DriverManager.getConnection(url, username, password);
这时有可能会产生SQLException,需要抛出或捕获
第四步:
创建执行SQL语句的对象(Statement/preparedStatement)
Statement:发送完整的SQL语句到数据库,不是直接执行,而是由数据库先编译,再运行
preparedStatement:可以使用占位符,是预编译的,他发送的是可以直接运行的SQL语句到数据库,数据库不需要编译,批处理比Statement效率高
preparedStatement:
String sql = "insert into user values (?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
Statement:
String sql = "insert into `user` values (8,'mc',20,'442261507@qq.com')";
Statement s = conn.createStatement();
第五步:
preparedStatement:
设置预编译的参数:
ps.setInt(1,6);
ps.setString(2,"马");
ps.setInt(3,21);
ps.setString(4,"442261578@qq.com");
int update = ps.executeUpdate(sql);
System.out.println(update); //插入成功,返回 1
这时需要注意传入的数据类型,第一个参数的意思是插入的是第几个占位符(从1开始数),第二个参数就是要插入的数据
Statement:
int update = s.executeUpdate(sql);
System.out.println(update); //插入成功,返回 1
第六步:
依次关闭开启的资源
ps.close();
conn.close();
完整的示例如下:
//加载数据库驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//设置连接URL
String url = "jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai";
String username = "root";
String password = "mc123";
//创建连接
try {
Connection conn = DriverManager.getConnection(url, username, password);
//创建执行SQL语句的对象(statement/preparedStatement)
String sql = "insert into user values (?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
//设置参数(注意数据类型)
ps.setInt(1,6);
ps.setString(2,"马聪");
ps.setInt(3,21);
ps.setString(4,"442261507@qq.com");
//执行插入操作
int update = ps.executeUpdate();
System.out.println(update); //插入成功,返回 1
//关闭开启的资源
ps.close();
conn.close();
} catch (SQLException e) {
System.out.println("创建连接失败!");
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
System.out.println("加载不到数据库驱动!");
e.printStackTrace();
}