先将MySQL在虚拟机中开启,并且开启远程连接,关闭虚拟机防火墙。
然后在idea中新建一个project,在maven中添加
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
在右侧点击刷新,下载资源包。
下载完成后在src中的main中开始操作
大体说来一共五步操作
1.加载驱动 Class.forName
2.获取connection对象
3.创建statement对象用来执行sql语句
4.返回查询结果 resultset
5.释放资源 close 资源
第一步
加载驱动
Class.forName(com.mysql.jdbc.Driver);
这里需要进行抛出异常!
第二步
获取connection对象
这里可以直接打 DriverManager 然后在其后面点出getConnection然后再点var获得对象
在括号中的顺序依次是
1:mysql的服务器地址,端口名,数据库名字(注意这里也需要注意顺序)
2:数据库用户名
3:数据库用户密码
connection = DriverManager.getConnection("jdbc:mysql://192.168.233.45:3306/jdbcstudb", //mysql服务器地址,端口,数据库名
"root", //数据库的用户名:root
"root" //数据库用户密码:root
);
这是具体的代码。
第三步 创建statement来执行sql语句
我们这里都将需要执行的sql语句表达为字符串。然后将里面需要输入的写为"?"再依次将要输入的值用数据类型赋值出来,通过创建connection的prepareStatement来将需要执行的sql语句放入到该对象中,再通过prepareStatement这个类的方法将需要输入的值依次赋给"?"从而实现sql语句的执行。
插入的实际代码如下
String sql="insert into master(name,age,gender,yearnum,did) value (?,?,?,?,?)";
String name="赵六";
int age=22;
String gender="男";
int yearnum=8;
int did=1;
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,name);
preparedStatement.setInt(2,age);
preparedStatement.setString(3,gender);
preparedStatement.setInt(4,yearnum);
preparedStatement.setInt(5,did);
int i = preparedStatement.executeUpdate();
if (i>0){
System.out.println("添加成功");
}
后面的修改,删除都是有sql语句按照以上格式来完成的。
查找有所不同,查找需要用到第四步
第四步,返回resultset查询结果
resultset这个对象需要有prepareStatement这个对象调用executeQuery方法来创建,而创建他的目的就是通过打印resultset这个对象中的查询获得的结果。直接打印resultset是无法得到自己想要的结果的,必须打印resultset中对应数据类型查询的对应的元素名字。
实际代码
String sql="select pid,m.name,d.name n ,d.health h,m.age,gender,yearnum,did from master m left join dog d on did=d.id where did=?";
int did=2;
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,did);
ResultSet resultSet = preparedStatement.executeQuery();
System.out.println("pid\t\t狗主人名字\t狗名字\t\t狗的健康值\t狗主人年龄\t狗主人性别\t狗主人养狗时长\t\t狗的编号");
while (resultSet.next()){
System.out.print(resultSet.getInt("pid")+"\t\t");
System.out.print(resultSet.getString("m.name")+"\t\t\t");
System.out.print(resultSet.getString("n")+"\t\t");
System.out.print(resultSet.getInt("h")+"\t\t\t");
System.out.print(resultSet.getInt("age")+"\t\t\t\t");
System.out.print(resultSet.getString("gender")+"\t\t");
System.out.print(resultSet.getString("yearnum")+"\t\t\t\t");
System.out.println(resultSet.getString("did"));
}
注意这里面取的别名下面也是可以用的。
第五步也很重要
释放资源。
finally {
//第五步释放资源
try {
//if (resultSet!=null){
// resultSet.close();
//}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
}catch (SQLException e) {
e.printStackTrace();
}
}