首页 > 其他分享 >jdbc

jdbc

时间:2023-06-28 19:22:07浏览次数:29  
标签:jdbc user1 rs System println 属性

1.jdbc的定义:java连接数据库进行数据的传递和交互

2.为什么需要jdbc:利用jdbc才可以使服务器端和数据库进行数据的传递和交互

jdbc场景1:客户端==>(本机+应用服务器) jdbc==》数据库

jdbc场景2:本机==》访问==》应用程序==》jdbc==》数据库《==jdbc
3.jdbc的工作原理

java连接数据库的步骤

java应用程序编写代码

调用jbdc api 接口或是类,加载jdbc的驱动(jar包)

调用数据库并测试

jdbc api接口的种类

Drivermanger 类

connerction接口

staterment接口

Resultset接口

4.jdbc api

jdbc api的核心作用:连接数据库,执行sql语句,保存结果

jdbc api执行顺序:

Drivermanager管理驱动

创建连接对象connection

使用statement对象执行sql语句

调用resultset对象保存查询结果(查询才会使用得到resultset)

5.jdbc编程模板

Class. forName("com.mysql.cj.jdbc.Driver")加载驱动。

Connection conn= DriverManager . getConnection("jdbc:mysql://localhost:3306/数据库名","root","123456")与数据库加载连接

PrepareStatement ps= con . prepareStatement("定义sql语句,增删改查")

{增:insert into 表名 (要增加的属性名) value(?[有几个属性就有就几个问号])                      删:delete from 表名 where id=?

改:update 表名set 属性名=?where 属性名=?     }

ps.setObject(1,2)代表第一个?是2

ResultSet rs=ps.executeQuery(在查询中使用)

ps.executeUpdate(在增删改中使用,使用后释放资源即完成)

查询对象则需进行定义对象,先循环遍历,

while(rs.next()){

User user =new User();(这里定义对象放在循环内还是循环外都可以。但是集合不行)

user.setId(rs.getInt("id"));

......}

遍历结束后既可以进行输出了

sout(user.getId){这是查询对象}

下面是查询集合

查询集合首先创建一个集合ArrayList<类名>list=new ArrayList<>();

后面到rs=ps.executeQuery();都一样。

进入循环

while(rs.next()){

User user=new User();(集合的定义对象只能在循环中进行)

user.setId(rs.getInt("id"));循环遍历集合中的值

list.add(user);

}

释放资源

先开的后关,后开的先关

用增强for循环进行输出

for(User u:list){

sout(u.getId())

}

模糊查询与集合查询基本一致。模糊查询的sql语法是(select *from 表名 where 属性名 like concat (‘%‘,?,‘%’))意思是,查询数据库中属性名的属性值中出现?(?占位符)的一行

我们可以用测试用例代替main函数

输入@Test

然后直接写方法。方法中再写上面的增删改语句、

jdbc的编程步骤

1.注册JDBC驱动

2.管理连接

3.创建PreparedStatement对象-预编译对象

为什么不用statement对象?因为statement对象有sql注入的问题,sql注入是sql中的安全性问题

4.发送SQL语句,并得到返回结果

5.处理返回结果

6.释放资源

多表查询

当有两个表时。我们可以通过给a表添加能关联b表的属性名。让两个表在逻辑上关联

先将两个表中有的属性名进行封装

在a的封装中添加b的属性名并封装。a的属性名不得与b的属性名重复

package Demo1.Text;
import Demo1.User.User1;
import org.junit.Test;
import java.sql.*;
import java.util.ArrayList;
public class Demo {
@Test测试用例
public void show(){
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
ArrayList<User1> list = new ArrayList<>();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_jdbc", "root", "123456");
ps = conn.prepareStatement("select users.*,book.id as bookid,book.name as bookname,book.author from users,book where users.bookid=book.id ");
(users.*代表所有的属性和属性值)更改属性名。id和name a和b都有。这里要用a的封装最后进行输出,就要把b的属性名改成bookid或者bookname a在封装时用被改过的属性名封装
            rs = ps.executeQuery();
while(rs.next()){
User1 user1=new User1();
user1.setId(rs.getInt("id"));
user1.setName(rs.getString("name"));
user1.setPassword(rs.getString("password"));
user1.setAge(rs.getInt("age"));
user1.setSex(rs.getString("sex"));
user1.setNickname(rs.getString("nickname"));
user1.setUsertype(rs.getString("usertype"));
user1.setBookid(rs.getInt("bookid"));
user1.setBookname(rs.getString("bookname"));
user1.setAuthor(rs.getString("author"));
list.add(user1);
}(循环遍历输入到集合中)
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
for (User1 u:list){
System.out.println(u.getId());
System.out.println(u.getName());
System.out.println(u.getNickname());
System.out.println(u.getAge());
System.out.println(u.getPassword());
System.out.println(u.getSex());
System.out.println(u.getUsertype());
System.out.println(u.getBookid());
System.out.println(u.getBookname());
System.out.println(u.getAuthor());
}(循环遍历集合,一个个从集合中拿出来)
}
}

 

标签:jdbc,user1,rs,System,println,属性
From: https://www.cnblogs.com/liuxin6de1b/p/17512333.html

相关文章

  • JDBC p1 JDBC概述
    JDBC概述基本介绍JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。JDBC的基本原理:JDBC带来的好处JDBC是Java提供的一套用于数据库操作的接口API,Java程......
  • sql server jdbc
    驱动<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>6.2.0.jre8</version></dependency>SSL连接出错[08S01]驱动程序无法通过使用安全套接字层(SSL)加密与SQLServer建立安全连接。错误:“......
  • 性能_3 jmeter连接数据库jdbc(sql server举例)
    一、下载第三方工具包驱动数据库1.因为JMeter本身没有提供链接数据库的功能,所以我们需要借助第三方的工具包来实现。 (有这个jar包之后,jmeter可以发起jdbc请求,没有这个jar包,也有jdbc取样器,但不能发起请求。)2.进入maven仓库-http://mvnrepository.com/,找到想要的......
  • JDBC
    JDBC是个接口,需要对应的实现类也就是对应的驱动。还记不记得的接口是都是抽象的?使用时得实例化对象,而驱动恰恰就是一个对应jdbc接口的全部实现类。这样一来,我们就能使用JDBC里面的抽象类了!! 那数据库连接的底层原理是什么?其实很简单,就是之前讲的IO流与反射机制,通过IO流找到......
  • 9. 使用JdbcTemplate【从零开始学Spring Boot】
      整体步骤:(1)  在pom.xml加入jdbcTemplate的依赖;(2)  编写DemoDao类,声明为:@Repository,引入JdbcTemplate(3)  编写DemoService类,引入DemoDao进行使用(4)  编写Demo2Controller进行简单测试。 具体操作流程如下: 使用JdbcTemplate类需要加入(如果在JPA已经加入的话,这......
  • Docker配置SpringBoot+ShardingJDBC+MybatisPlus项目实现分库分表与读写分离
    Docker配置SpringBoot+ShardingJDBC+MybatisPlus项目实现分库分表与读写分离 分类于 实战例子本文ShardingJDBC相关知识主要参考自ShardingJDBC官方文档,更多的用法建议到官网文档查看。前言传统的业务系统都是将数据集中存储至单一数据节点的解决方案,如今随着互联网数据......
  • 错误:“java.lang.ClassNotFoundException: com.mysql.jdbc.Driver“ 如何解决?
    ——运行项目时遇到java.lang.ClassNotFoundException:com.mysql.jdbc.Driver问题,解决方案:错误如下:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver atorg.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) atorg.......
  • 使用NamedParameterJdbcTemplate指定命名参数
    在本文中,我们将介绍如何在连接到后端Postgres数据库的Spring启动应用程序中使用NamedParameterJdbcTemplate。我们将使用NamedParameterJdbcTemplate从PostgresDB插入,更新和删除员工。为了保持设计的合理性,我将dao,service和controller分开了。服务只是本文的一个转折点。概观Named......
  • Java_Jdbc_连接池的testQuery/validationQuery设置
     JDBC连接池的testQuery/validationQuery设置 在《Tomcat中使用Connector/J连接MySQL的超时问题》帖子中想要增加对连接池中连接的测试/验证,防止数据库认为连接已死而Web应用服务器认为连接还有效的问题,Mysql文档中提到Tomcat文档中的例子中用的是validationQuery,但是网......
  • JDBC编程
    前置知识Java中Properties类是用于读取配置文件(.properties 、.cfg)中的配置信息。通常会将变动不大的配置信息存储在以.properties结尾的配置文件中,可以通过java.util.Properties类读取配置文件,将配置信息注入到配置类中如properties文件内容的格式是键=值形式,......