1.注册驱动
DriverManager.registerDriver(new Driver()); //创建了两次
new Driver(); // 不能指定
Class.forName("com.mysql.cj.jdbc.Driver"); //最好的
2.获取连接
Connection connection = DriverManager.getConnection("jdbc:mysql:///atguigu","root","abc123");/**getConnect(1,2,3)是一个重载方法* 核心属性* 1.数据软件所在的主机的IP地址 : localhost | 127.0.0.1* 2.数据软件所在的主机端口号:3306* 3.连接的具体库* 4.连接的账号* 5.连接的密码* 6.可选信息* 三个参数:* String url 数据库软件所在的信息,连接的具体库,以及其他可选信息* 语法:jdbc:数据库管理软件名称[mysql,oracle]://ip地址|主机名:port/数据库名* jdbc:mysql://127.0.0.1:3306/atguigu* 本机3306省略版 jdbc:mysql:///atguigu* String user 数据库的账号* String password 数据库的密码* 二个参数* Properties info = new Properties();info.put("user","root");info.put("password","root");* Properties: 存储账号和密码,类似map,key和value都是string类型* url的路径属性可选信息* url?user=账号&password=密码* */
3.创建statement
//不安全 sql注入攻击
Statement statement = connection.createStatement();
String sql = "Select * from t_user where account = '" + account +"' AND password = '" + password + "';";
ResultSet resultSet = statement.executeQuery(sql);//安全// 1、编写SQL语句结果,不包括动态值部分的语句,动态值部分使用使用占位符 ?
// 2、创建preparedstatement,并且传入动态值// 3、动态值占位符 赋值 ? 单独赋值即可
String sql = "select * from t_user where account = ? and password = ?;";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1,account);
preparedStatement.setObject(2,password);
ResultSet resultSet = preparedStatement.executeQuery();
4.发送sql语句,并且获取返回结果
//返回改变的行数
int i = statement.executeUpdate(sql);//返回查询结果集 也是一种类似与表的结构
ResultSet resultSet = statement.executeQuery(sql);查询方式1 知道有几列并且列的名字确定
while (resultSet.next()) {int id = resultSet.getInt(1);String account1 = resultSet.getString("account");String password1 = resultSet.getString(3);String nickname = resultSet.getString(4);
}查询方式2 不知道有几列
ResultSetMetaData metaData = resultSet.getMetaData();
List<Map> list = new ArrayList<>();
int columnCount = metaData.getColumnCount();
while(resultSet.next()) {Map map = new HashMap();for(int i = 1; i <= columnCount; ++i) {Object value = resultSet.getObject(i);String columnLabel = metaData.getColumnLabel();map.put(columnLabel,value);}list.add(map);
}
5、释放资源
resultset.close();
statement.close();
connection.close();