提供修改数据库和查询数据库的代码,两者只有很细微的差别
一.前期准备:
注意在进行连接数据库首先你得下载你对应MYSQL版本的JDBC驱动包,比如MYSQL8.0版本的你就要下载MYSQL8.0版本的JDBC驱动包,MYSQL5.1版本的你就要下载MYSQL5.1版本的JDBC驱动包
我下载的8.0版本的驱动包就是这个样子
下载了驱动包以后要在你的项目当中创建一个Directory的包,将你的JDBC驱动包粘贴到你创建的这个包中
粘贴了以后右键你创建的这个包,点击Add as Library(你得告诉它你粘贴进来的这是一个库)这样JDBC驱动包的导入就完成了
二.修改数据库代码:
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: wuyulin
* Date: 2023-07-19
* Time: 14:55
*/
public class JDBCdemo1Insert {
public static void main(String[] args) throws SQLException {
//确定数据库中有一个student表(id,name)往里面插入一个数据
//一,创建数据源(数据库服务器在哪里)
DataSource dataSource = new MysqlDataSource(); //典型的向上转型
//设置属性
//1.填入数据库服务器所在的位置
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbcexercise?characterEncoding=utf8&useSSL=false&serverTimezone=UTC"); //向下转型
//用下面这个方法也是一样的,但是上面的方法可以降低mysql驱动包和项目之间的偶合关系,避免后面更换数据库时有太大成本
//MysqlDataSource mysqlDataSource=new MysqlDataSource();
//mysqlDataSource.setUrl();
//2.填入数据库的用户名
((MysqlDataSource) dataSource).setUser("root");
//3.填入数据库的密码
((MysqlDataSource) dataSource).setPassword("xxxx");
//到这里,只是描述了一下数据库服务器所在的地址,还没有真正的连接数据库服务器
//二.与数据库服务器建立连接
Connection connection = dataSource.getConnection(); //建立网络连接会有很多异常,可以抛给上一级进行处理
//三.构造sql语句
Scanner sc=new Scanner(System.in);
System.out.println("请输入id");
int id =sc.nextInt();
System.out.println("请输入name");
String name=sc.next();
String sql = "insert into student values(?,?)"; //?表示占位符,表示后面再赋值
//把String类型的sql语句转换成PreparedStatement类型的语句再传递给mysql服务器
//Statement类型的sql语句也可以传递给mysql服务器,但是一般推荐用PreparedStatement
//PreparedStatement会再传递给mysql服务器前在客户端这边进行初步解析,这样就能减少服务器的压力,而Statement不会进行初步解析
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id); //设置第一个?是整数,为id变量
statement.setString(2,name); //设置第二个?是字符串,为name变量
//四.执行sql语句
int n = statement.executeUpdate();
//返回值n表示被影响的数据行数
System.out.println(n + "条记录被影响");
//五.释放必要的资源,关闭连接
//创建的语句对象,连接对象,这些资源不用了要及时释放
//要注意关闭的顺序,先创建的后关闭,后创建的先关闭
statement.close();
connection.close();
}
}
1.假设数据库中有一个表
假设数据库中有一个student表(id,name)现在我们要往里面插入一个数据(你可以先在数据库中创建好这张表方便检验)
2.创建数据源(数据库服务器在哪里)
创建数据源的代码运用到了 DataSource dataSource = new MysqlDataSource()是父类引用指向子类对象运用到了向上转型,(MysqlDataSource) dataSource)运用到了向下转型,因为只有子类MysqlDataSource对象才能调用setUrl等方法,我们在创建数据源的时候也可以直接创建MysqlDataSource的引用指向MysqlDataSource的对象,再直接用MysqlDataSource的引用调用setUrl等方法,就不需要用到向上和向下转型了,但我们运用转型的这种方法可以降低mysql驱动包和项目之间的偶合关系,避免后面更换数据库时有太大成本。
setUrl()中输入的参数是你当前电脑数据库的URL(数据库资源的位置)
URL的组成
除了这个照片中的介绍的我还添加了serverTimezone=UTC,添加这个的原因在JDBC编程连接MySQL数据库遇到的两个错误中有提到
setUser()是数据库的用户名
setPassword()是数据库的密码
3.与数据库建立连接
通过数据源dataSource调用其中的getConnection()方法建立连接,并将返回值赋给Connection类型的引用
4.构造sql语句
我们将sql语句写为一个String类型的对象,再通过connection引用调用prepareStatement(sql)方法将String类型的sql语句转换成PreparedStatement类型的sql语句,
为什么用PreparedStatement类型而不用Statement类型
Statement类型的sql语句也可以传递给mysql服务器,但是一般推荐用PreparedStatement
PreparedStatement会再传递给mysql服务器前在客户端这边进行初步解析,这样就能减少服务器的压力,而Statement不会进行初步解析,所以我们一般推荐用PreparedStatement类型
5.执行sql语句
通过statement引用来调用executeUpdate()方法执行sql语句,对数据库进行修改,如增删改都是调用executeUpdate()方法,而对数据库进行查询调用的则是executeQuery()方法
调用executeUpdate()方法放回的是对数据库影响的行数,而executeQuery()方法返回的是查询到的表格是ResultSet类型的,然后通过遍历ResultSet类型的表格来输出查询到的结果
6.释放必要的资源,关闭连接
要保持良好的编程习惯,创建的语句对象,连接对象,这些资源不用了要及时释放
要注意释放的顺序,先创建的后释放,后创建的先释放文章来源:https://www.toymoban.com/news/detail-607885.html
三.查询数据库的代码
import com.mysql.cj.jdbc.MysqlDataSource;
import com.mysql.cj.protocol.Resultset;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: wuyulin
* Date: 2023-07-19
* Time: 20:06
*/
public class JDBCdemo3Select {
public static void main(String[] args) throws SQLException {
//1.创建数据源‘
DataSource dataSource=new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbcexercise?characterEncoding=utf8&useSSL=false&serverTimezone=UTC");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("1868397383q");
//2.连接数据库
Connection connection=dataSource.getConnection();
//3.构造sql语句
Scanner sc=new Scanner(System.in);
System.out.println("请输入要查询的id");
int id=sc.nextInt();
String sql="select * from student where id=?";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,id);
//4.执行sql
ResultSet resultset=preparedStatement.executeQuery(); //ResultSet是表格,查询sql语句执行返回的是表格
//遍历表格
while (resultset.next()){
int student_id=resultset.getInt("id");
String student_name=resultset.getString("name");
System.out.println("id="+student_id+",name="+student_name);
}
//释放资源
resultset.close();
preparedStatement.close();
connection.close();
}
}
如何遍历ResultSet类型的临时表
文章来源地址https://www.toymoban.com/news/detail-607885.html
到了这里,关于JAVA连接数据库 JDBC编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!