连接MySQL数据库
程序员文章站
2022-03-29 17:19:09
查询MySQL数据库的内容1、首先在MySQL里面建立一个库和表,插入数据。建库!接着下一步 建表语句如图所示,数据也插入里面了。2、打开idea,新建一个Javaproject,将jar包导入src中 点击图中选项在src里面建立一个tool工具包,然后在里面建立一个util 工具类:package cn.hp;import cn.hp.model.Student;import java.sql.*;import java.util.ArrayList;public class...
查询MySQL数据库的内容
1、首先在MySQL里面建立一个库和表,插入数据。
建库!
接着下一步 建表语句
如图所示,数据也插入里面了。
2、打开idea,新建一个Javaproject,
将jar包导入src中 点击图中选项
在src里面建立一个tool工具包,然后在里面建立一个util 工具类:
在package cn.hp;
import cn.hp.model.Student;
import java.sql.*;
import java.util.ArrayList;
public class Test01 {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// jdbc操作
// test1(1,"1' or '1'='1");
test2();
}
public static void test1(int id , String sname) throws ClassNotFoundException, SQLException {
// 1、加载驱动 选择当前使用的数据库 选择了mysql
Class.forName("com.mysql.jdbc.Driver");
// 2、创建一个连接 设计模式的理念 1、提升了安全性 2、运行时的性能 3、代码的优美 4、代码的可拓展(方便升级改造)
// 一个方法 5000行代码
Connection connectionName = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf8&useSSL=true","root","root");
// 3、新建一个 查询页面 用来编写sql的 sql语句编辑器
//
Statement statement = connectionName.createStatement();
// 4、编写sql语句
// 二进制数据 21: 101010 >> 1 --> 42
String sql = "select * from student where id = " +id +" and sname = '"+sname+"' ";
// 5、执行sql,使用statement 获取 ResultSet 结果集 ( 表类型 行 列 )
// 查询的结果集 : 4种 单行单列 --> 基本数据类型接收
// 单行多列 --> 使用对象进行接收
// 多行单列 --> 使用集合(基本数据类型)进行接收
// 多行多列 --> 使用集合(对象)进行接收
ResultSet resultSet = statement.executeQuery(sql);
// 存在一个游标 ,这个表示当前正在读取第几行的数据 默认在 字段上 不在记录上,
// 想让游标到记录上,需要使用next()将游标下移
// System.out.println(resultSet.isBeforeFirst() +" " + resultSet.getRow());
// 代表第0行的数据 字段名称 列的数量
// ResultSetMetaData metaData = resultSet.getMetaData();
// for (int i = 1 ; i <= metaData.getColumnCount() ; i ++){
// System.out.print(metaData.getColumnName(i));
// System.out.println(metaData.getColumnLabel(i));
// }
ArrayList list = new ArrayList();
while (resultSet.next()){
// 保存数据库中的多行多列 数据
// 每走一次循环,创建一个对象, 使用对象 保存当前行的数据
Student student = new Student(
// 从数结果集的表中 使用int类型的 表示获取当前行的第1列 使用string类型的参数 表示获取当前字段的列
resultSet.getInt(1),
resultSet.getString(2),
resultSet.getString(3),
resultSet.getString("ssex")
);
list.add(student);
// System.out.println( "当前下标位置" + resultSet.getRow()
// +" 当前是否第一行" +resultSet.isFirst() + " "
// + resultSet.isLast() + " " +resultSet.isAfterLast());
}
System.out.println(list);
// resultSet.previous();
// System.out.println(resultSet.isAfterLast() + " "+ resultSet.getRow());
// int i = resultSet.getInt(1);
// System.out.println(i);
// 使用Java中的容器( 基本数据类型、数组(长度固定)、集合(长度可变)、对象 ) 保存 数据库查询的数据
// 关闭资源数据 关闭的是对象, 只关注自己创建的对象 ;
resultSet.close();
statement.close();
connectionName.close();
}
// 预编译 编译器
public static void test2() throws ClassNotFoundException, SQLException {
// 1、加载驱动 选择当前使用的数据库 选择了mysql
Class.forName("com.mysql.jdbc.Driver");
// 2、创建一个连接 设计模式的理念 1、提升了安全性 2、运行时的性能 3、代码的优美 4、代码的可拓展(方便升级改造)
// 一个方法 5000行代码
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?useSSL=false&characterEncoding=utf8","root","root");
// 3、新建一个 查询页面 用来编写sql的 sql语句预编辑器 PreparedStatement
// 先将sql与使用正确的方式 拼接完成 速度和 statement 比 会慢很多 但是 安全性能高 能够防止sql注入
// 把sql语句中的条件 使用 ? 代替
// 把条件内容 当成 参数 交给 预编译器 让他自己拼接
String sql = "select * from student where id = ? and sname = ?";
Object [] strs = {1,"赵雷"};
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1,strs[0]);
preparedStatement.setObject(2,strs[1]);
// 直接调用方法 表示 执行已经拼接好的sql语句
ResultSet resultSet = preparedStatement.executeQuery();
ArrayList list = new ArrayList();
while (resultSet.next()){
// 保存数据库中的多行多列 数据
// 每走一次循环,创建一个对象, 使用对象 保存当前行的数据
Student student = new Student(
// 从数结果集的表中 使用int类型的 表示获取当前行的第1列 使用string类型的参数 表示获取当前字段的列
resultSet.getInt(1),
resultSet.getString(2),
resultSet.getString(3),
resultSet.getString("ssex")
);
list.add(student);
// System.out.println( "当前下标位置" + resultSet.getRow()
// +" 当前是否第一行" +resultSet.isFirst() + " "
// + resultSet.isLast() + " " +resultSet.isAfterLast());
}
System.out.println(list);
// resultSet.previous();
// System.out.println(resultSet.isAfterLast() + " "+ resultSet.getRow());
// int i = resultSet.getInt(1);
// System.out.println(i);
// 使用Java中的容器( 基本数据类型、数组(长度固定)、集合(长度可变)、对象 ) 保存 数据库查询的数据
// 关闭资源数据 关闭的是对象, 只关注自己创建的对象 ;
resultSet.close();
preparedStatement.close();
connection.close();
}
}
本文地址:https://blog.csdn.net/yz2419774634/article/details/112542760
上一篇: 认识Java
下一篇: 盘点古代六大奇才,你说得出几位?