当前位置: 首页 > news >正文

福建富通建设有限公司网站青海省建设厅网站执业

福建富通建设有限公司网站,青海省建设厅网站执业,郑州做网站公司yooker,生产建设兵团第三师政务网站Content 🎉1什么是API 🎉2.什么是JDBC 🎉3.数据库驱动包的安装 🎉4.数据库安装包在idea的使用 🎉5.JDBC的增删改查的简单实现 今天为大家带来JAVA的数据库编程,也就是用Java实现数据库 数据库的最基本的操作就是…

Content

🎉1什么是API

🎉2.什么是JDBC

🎉3.数据库驱动包的安装

🎉4.数据库安装包在idea的使用

🎉5.JDBC的增删改查的简单实现

今天为大家带来JAVA的数据库编程,也就是用Java实现数据库

数据库的最基本的操作就是增删改查

在实工作中,手敲sql语句几乎用不到,更多的是用代码来实现sql语句

像常见的数据库,比如mysal,sqlsever,Oracle等数据库软件,在开发的时候会提供编程的接口,叫做API

什么是API呢,也就是实现某种功能,例如Java的接口,就是API,比如Collection接口,里面有很多方法,可以实现很多功能,总的来说API多用于函数的形式来表示

现在要用Java实现数据库,那么也需要提供一个API用来对接Java和数据库,那么就要用JDBC,Java对数据库提出要求,数据库本来的功能上要增加一些来匹配Java,这样才可以让Java操作数据库,执行数据库.

JDBC,全称,Java Database Connectivity,是java和数据库的连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。可以为多种关系数据库提供统一访问.

Java通过JDBC操作数据库,那jdbc和数据库建立连接的时候,需要使用数据库驱动包,就是对不同数据库的原生API进行封装,封装成JDBC认识的API,,Java需要在项目导入数据库驱动包,也才能执行数据库,那么我们就需要下载驱动包,这里我们选择去maven中央仓库下载

上链接

https://mvnrepository.com/

这个要和自己下载的数据库的版本要匹配,因为我下载的是5系列的,所以我要用这个,5开头的都可以选

点击这个

然后下载了,之后,建立一个项目,然后在项目点新建directory,拷贝这个地址,就建立了lib文件

就像这样,这样数据库就和java建立连接了,现在就可以开始在idea编辑数据库代码了

还是和数据库一样,实现增删改查,上代码

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.ConnectionEvent;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;/*** Created with IntelliJ IDEA.* Description:* User: WHY* Date: 2023-03-03* Time: 20:57*/
//JDBC实现sql
public class JDBCInsert {public static void main(String[] args) throws SQLException {//JDBC需要以下步骤完成开发//1.创建并初始化一个数据源DataSource dataSource=new MysqlDataSource();//向上转型((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");//向下转型,因为seturl这个方法是子方法特有的((MysqlDataSource)  dataSource).setUser("root");//设置用户名((MysqlDataSource)   dataSource).setPassword("1111");//就是数据库的密码//2.和数据库服务器建立连接Connection connection=dataSource.getConnection();//3.构造sql语句String sql="insert into student values(1,'张三')";PreparedStatement statement=connection.prepareStatement(sql);//提前预编译一下sql,客户端对发出的请求进行预编译,减轻服务器的压力//4.执行sql语句int ret=  statement.executeUpdate();System.out.println(ret);//5.释放必要的资源statement.close();connection.close();}
}

看看执行结果,在idea上结果是1的原因是,stament.executeUpdate这个方法返回类型就是int型的,代表修改的行数

执行完以后记得释放资源

现在对这段代码进行优化,发现在构造sql语句的时候比较麻烦,进行优化

String sql="insert into student values(1,'张三')"; 

这个语句把要输入的内容写死了,也就是硬编码,在现实开发环境中,要为用户考虑,所以要写用户输入

public class JDBCInsert {public static void main(String[] args) throws SQLException {Scanner scanner=new Scanner(System.in);//JDBC需要以下步骤完成开发//1.创建并初始化一个数据源DataSource dataSource=new MysqlDataSource();//向上转型((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");//向下转型,因为seturl这个方法是子方法特有的((MysqlDataSource)  dataSource).setUser("root");//设置用户名((MysqlDataSource)   dataSource).setPassword("1111");//就是数据库的密码//2.和数据库服务器建立连接Connection connection=dataSource.getConnection();//3.从控制台读取用户输入的的内容System.out.println("请输入姓名");String name=scanner.next();System.out.println("请输入学号");int id=scanner.nextInt();//4.构造sql语句String sql="insert into student values("+id+",'"+name+"')";PreparedStatement statement=connection.prepareStatement(sql);//提前预编译一下sql,客户端对发出的请求进行预编译,减轻服务器的压力//5.执行sql语句int ret=  statement.executeUpdate();System.out.println(ret);//6.释放必要的资源statement.close();connection.close();}

但是这种写法容易产生sql注入问题

 public static void main(String[] args) throws SQLException {Scanner scanner=new Scanner(System.in);//JDBC需要以下步骤完成开发//1.创建并初始化一个数据源DataSource dataSource=new MysqlDataSource();//向上转型((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");//向下转型,因为seturl这个方法是子方法特有的((MysqlDataSource)  dataSource).setUser("root");//设置用户名((MysqlDataSource)   dataSource).setPassword("1111");//就是数据库的密码//2.和数据库服务器建立连接Connection connection=dataSource.getConnection();//3.从控制台读取用户输入的的内容System.out.println("请输入姓名");String name=scanner.next();System.out.println("请输入学号");int id=scanner.nextInt();//4.构造sql语句String sql="insert into student values(?,?)";PreparedStatement statement=connection.prepareStatement(sql);//提前预编译一下sql,客户端对发出的请求进行预编译,减轻服务器的压力statement.setInt(1,id);statement.setString(2,name);//5.执行sql语句int ret=  statement.executeUpdate();System.out.println(ret);//6.释放必要的资源statement.close();connection.close();}

问号代表占位符,下面的setint里面的1,id代表第一个问号放id,第二个问号放name ,然后根据动态输入就自动放入到sql语句中

 

这一段就是Preparestatement方法拼接以后 的数据

释放资源:

数据库的客户端和服务器通过网络进行通信,需要占用一定的资源,但客户端很多,服务器很少时,要即及时释放资源

谁先创建,谁就后释放

DataSource内置了数据库连接池,可以复用连接,提高连接服务器的效率

现在写查询操作

public class TestDemo {public static void main(String[] args) throws SQLException {//JDBC需要以下步骤完成开发//1.创建并初始化一个数据源DataSource dataSource=new MysqlDataSource();//向上转型((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");//向下转型,因为seturl这个方法是子方法特有的((MysqlDataSource)  dataSource).setUser("root");//设置用户名((MysqlDataSource)   dataSource).setPassword("1111");//就是数据库的密码//2.和数据库服务器建立连接Connection connection=dataSource.getConnection();//3.构造sql语句String sql="select* from student";PreparedStatement statement=connection.prepareStatement(sql);//提前预编译一下sql,客户端对发出的请求进行预编译,减轻服务器的压力//4.执行sql语句ResultSet resultSet= statement.executeQuery();//5遍历结果集合while(resultSet.next()){int id=resultSet.getInt("id");String name=resultSet.getString("name");System.out.println("+id+"+id+"name"+name);}//6.释放必要的资源resultSet.close();statement.close();connection.close();}

 resultset这个代表查询的结果集,用到的get方法相当于就是拿到某下标 的元素

删除操作

public static void main(String[] args) throws SQLException {Scanner scanner=new Scanner(System.in);//JDBC需要以下步骤完成开发//1.创建并初始化一个数据源DataSource dataSource=new MysqlDataSource();//向上转型((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");//向下转型,因为seturl这个方法是子方法特有的((MysqlDataSource)  dataSource).setUser("root");//设置用户名((MysqlDataSource)   dataSource).setPassword("1111");//就是数据库的密码//2.和数据库服务器建立连接Connection connection=dataSource.getConnection();/*//3.从控制台读取用户输入的的内容System.out.println("请输入姓名");String name=scanner.next();System.out.println("请输入学号");int id=scanner.nextInt();*///4.构造sql语句String sql="delete from student where id=1";PreparedStatement statement=connection.prepareStatement(sql);//提前预编译一下sql,客户端对发出的请求进行预编译,减轻服务器的压力/*  statement.setInt(1,id);statement.setString(2,name);*/System.out.println(statement);//5.执行sql语句int ret=  statement.executeUpdate();System.out.println(ret);//6.释放必要的资源statement.close();connection.close();}
}

修改操作

 public static void main1(String[] args) throws SQLException {Scanner scanner=new Scanner(System.in);//JDBC需要以下步骤完成开发//1.创建并初始化一个数据源DataSource dataSource=new MysqlDataSource();//向上转型((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");//向下转型,因为seturl这个方法是子方法特有的((MysqlDataSource)  dataSource).setUser("root");//设置用户名((MysqlDataSource)   dataSource).setPassword("1111");//就是数据库的密码//2.和数据库服务器建立连接Connection connection=dataSource.getConnection();/*//3.从控制台读取用户输入的的内容System.out.println("请输入姓名");String name=scanner.next();System.out.println("请输入学号");*//*int id=scanner.nextInt();*///3.构造sql语句String sql="update student set id=12 where name='张三'";PreparedStatement statement=connection.prepareStatement(sql);//提前预编译一下sql,客户端对发出的请求进行预编译,减轻服务器的压力System.out.println(statement);//4.执行sql语句int ret=  statement.executeUpdate();System.out.println(ret);//5.释放必要的资源statement.close();connection.close();}

这就是今天的所有内容了,我们下期再见!!!

http://www.yayakq.cn/news/982887/

相关文章:

  • 传奇新开网站服设计工作室起名
  • 电子商务网站建设的平台企业网站建设国内外现状
  • 营销软件网站建站工具有哪些
  • 网站建设哪里去学建网站能赚钱吗
  • 最好网站建设公司临西企业做网站
  • 网站制作网站价格500强企业网站建设
  • 有云服务器和域名怎么做网站典型的o2o平台有哪些
  • 一些你不知道的网站手工活300元一天
  • 网站留言板块怎么做网站集约化建设标准
  • 崇明手机网站建设wordpress 美化 插件大全
  • 课程网站建设简介遵义网站优化
  • 做博客用什么系统做网站好股东分红如何合理节税
  • 企业购 网站建设运营设计是干什么的
  • 网站建站公网页设计与网站开发的区别
  • 网站设计的论坛简单网站建设论文总结
  • 阿里巴巴做网站么上海有哪些大公司
  • 寿阳网站建设怎么做QQ信任网站
  • 衡水网站设计哪家专业wordpress 下载选择
  • 郑州个人网站建设目前最好的免费网站
  • 广西建设职业技术学院青年网站钢构网架加工厂
  • 不能进入建设银行网站建设银行e路护航官方网站登陆
  • 地产公司做网站维护写代码么福建省中嘉建设工程有限公司网站
  • 怎么推广网站学院网站建设方案 网站内容
  • 专业做物流公司网站新网站建设流程
  • 建设网站阿里云服务器wordpress默认主题
  • 网站建设步骤 高清教 程上百度推广的网站要多少钱
  • 什么网站专门做自由行的专业做制作网站
  • 什么网站的图片可以做商用网站集约化建设会议议程
  • 做网站构思网站建设属于什么行业分类
  • 成都记者留言网站江苏做网站的企业