java与数据库(day1)
1、在idea中创建一个project
2、选择src源文件,new一个包
3、选中上一步new的包,new一个类
4、在上一步new的类中,进行jdbc增删改查操作(jdbc对数据库的操作)
- 新建目录,用来存放包
- 在增删改查操作之前,首先需要配置环境
- 在mysql connector中下载jar包
也许进行下一步操作,需要提前配置java环境变量和下载java
- 将下载好的jar包复制到目录文件中
- 将目录下的jar包配置到路径中
- 点击设置,选择project structure
- libries->"+"->java
- 定位到下载的jar包,将jar包放到构建路径下
- sdks选项:选择java版本
5、java操作数据库
- 步骤:获取数据库连接,建立statement,发出增删改查命令,返回结果集,关闭数据库连接
- 异常问题
选择moreactions,在运行时抛出异常
两个"!"均可点击,都会自动解决异常
package com.day1;
import java.sql.*;
public class jdbcutils {
//日志记录器的默认实例
//匿名内部类
private static final Logger LOGGER = new Logger(){
private boolean out = true;//是否输出日志,有点像github博客主题配置文件
@Override
public void info(String msg) {
if(out) {
System.out.print(msg);
}
}
@Override
public void error(String error) {
if(out){
System.out.print(error);
}
}
@Override
public void error(String error, Throwable throwable) {
if(out){
System.out.print(error+"\n"+throwable.getMessage());
}
}
};
/*
获取数据库连接,四个参数:驱动名,连接数据库字符串,数据库用户名,密码
public static Connection getConnection(String driver, String url,String user, String password)throws SQLException {
return DriverManager.getConnection(url, user, password);
}
*/
/*
获取数据库连接:转换为运行时异常
*/
public static Connection getConnection(String driver, String url,String user, String password) {
try {
Class.forName(driver); //也可采用本行也可抛出异常
return DriverManager.getConnection(url, user, password);
} catch (SQLException | ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
/*
关闭数据库连接
*/
public static void closeConnection(Connection connection){
//connection.close();需要抛出异常,将强制异常转换为运行时异常
try {
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
不抛出异常,关闭数据库
*/
public static void closeQuietly(Connection connection){
try {
connection.close();
} catch (SQLException e) {
LOGGER.error("关闭数据库连接失败", e);//定义了匿名内部类之后可以使用,下边那行就可以删掉了
e.printStackTrace();//输出异常,取代抛出异常。将异常打印到控制台中。
}
}
/*
关闭statement,statement承载数据库和参数的载体
*/
public static void closeQuietly(Statement statement){
try {
statement.close();//关闭数据库流载体
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
关闭结果集,数据据库查出来的二维表格
*/
public static void closeQuietly(ResultSet resultSet){
try {
resultSet.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
同时关闭多个数据库对象
*/
public static void closeQuietly(Object... objs) { //非常神奇,下边代码是报错的,报错也没事,咱可以一个一个关闭,不用非得一次关闭好几个
if (objs != null) {
for (Object obj : objs) {
if (obj instanceof Connection conn) {
closeQuietly(conn);
} else if (obj instanceof Statement stmt) {
closeQuietly(stmt);
} else if (obj instanceof ResultSet rst) {
closeQuietly(rst);
}
}
}
}
private static interface Logger{
//输出一条日志信息
void info(String msg);
//输出错误信息/异常日志
void error(String error);
//一条更加详细的日志信息:打印异常信息和异常对象
void error(String error, Throwable throwable);
}
}