Java连接数据库

数据库

存储数据:集中管理

目的: 文件中的数据能够放在数据库中集中管理

管理方法:一个项目一个库,每个库中包含最小化数据的表

开发: 节省存储空间,节省运行空间,采用数据库,架构

Java连接数据库

Java se所有类String ArrayList来自java.lang

后面web页面应用----à导包,包第三包 jar包

mysql-connector-java.jar 连接数据库的版本 

java面向接口,提供了数据库的相关接口,每个不同的数据库厂家根据接口开发方法。Java使用数据库,调用对应接口的实现。

反射

连接:Connection 连接

在Driver类中connect方法就是数据库连接方法,方法返回类型Connection

Connection接口中方法就是操作数据库的相关方法

Java原生DriverManager,方便程序员开发方便

DriverManager调用Connection, getConnection

调用DriverManager.getConnection(数据库地址,用户名,密码 );

先把mysql-connect-java包导入到idea的库中

首先建一个包

Java连接数据库_第1张图片这个package取名lib

Java连接数据库_第2张图片把使用的java包拷贝在lib的package目录下。

Java连接数据库_第3张图片在项目名称上右键,点击 open Module setting 模块设置。

Java连接数据库_第4张图片在出现的对话框中,左侧点击library库,然后右边点击加号,添加这个jar包。

Java连接数据库_第5张图片点击加号后,选择java

Java连接数据库_第6张图片出现的对话框,选择自己项目下的jar 包文件

Java连接数据库_第7张图片这里是一个询问的信息

Java连接数据库_第8张图片直接点击ok即可。继续ok即可。

这时项目中的jar包就会解开。

Java连接数据库_第9张图片解开后,才知道java包如何导入。

使用代码连接java,再规范化开发(面向接口)

连接java效仿mysql源码,注册驱动。

DriverManager.registerDriver(new Driver());

获取Connection连接接口,因为数据库的操作方法都在这里。

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","admin");

连接时输入mysql 数据库的连接地址。

getConnection输入数据库的连接地址

本地localhost,连接端口号 3306,连接数据库

jdbc:mysql://localhost:3306/shop

用户名 root

密码  admin

通过连接执行sql语句,需要定义sql语句。

String sql="select * from user";

在connection操作数据库前面有两个Statement , ResultSet

 Statement 是执行sql语句的线程。

//Statement进行线程语句的处理

Statement st=conn.createStatement();

Statement是线程语句的处理,statement中可以执行语句

executeQuery执行查询,返回的类型是ResultSet,这是数据库结果记录

executeUpdate执行更新(增删改)

统一方法;execute执行增删改查,返回值是布尔型,不能查询后返回记录的条件(除登录)

如果执行查询,结果返回ResultSet

//查询的方法executeQuery,结果是ResultSet

ResultSet rs=st.executeQuery(sql);

在Resultset中看到next()方法,一定用到Iterator迭代器,这个迭代器可以用next();ResultSet是一个迭代器

只能使用迭代器的方法来使用。返回类型:next()有没有,数据库中把指针移到当前数据。

ResultSet中next方法的原理。

Java连接数据库_第10张图片 在ResultSet类中都要get后面跟上类型。因为java 和mysql 都是强语言类型,数据必须指明类型。Java 获取字段类型一定要跟mysql里对应字段类型是一致的。

ResultSet rs=st.executeQuery(sql);

//因为ResultSetnext()判断数据是否有,如果有一直做,执行一次next(),记录在restulSetwhile(rs.next()){

    //按照mysql的类型和java类型对应关系取数据

    int id=rs.getInt("id");

    String name=rs.getString("username");

    String sex=rs.getString("sex");

    String position=rs.getString("position");

    int age=rs.getInt("age");

    String password=rs.getString("password");

    System.out.println(id+":"+name+":"+sex+":"+position+":"+age+":"+password);

}

在数据方法中,Connection中有方法close(),close()关闭。

   这里的问题:

DriverManager.registerDriver(new Driver());

注册Driver时,new Driver中源码中静态块中也发生new Driver()

我们这里的代码执行两次,目的是注册驱动

在源码中,获取连接本身具备

Reflection.getCallerClass()

Reflection类是 反射

通过反射技术注册类

注意:java 只出规范,其他的应用按照规范去开发,java在每一个规范中都有反射去找到相关的类。

直接使用反射技术把驱动注册。

正确连接数据库使用方法
(1)注册驱动(反射)

Class.forName("com.mysql.jdbc.Driver");

(2)获取连接

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","admin");

(3)定义sql语句

String sql="select * from user";

(4)获取Statement

Statement st=conn.createStatement();

(5)根据需要决定,如果查询executeQuer,如果更新executeUpdate

ResultSet rs=st.executeQuery(sql);

返回结果:如果是查询用ResultSet,如果是增删改,返回的是int

如果是ResultSet使用迭代器遍历next()方法

(6)根据mysql的数据类型与java 的数据类型的对应关系,使用对应的get方法,得出结果.

(7)最后依次关闭ResultSet,Statement,Connection。

rs.close();

st.close();

conn.close();

开发:基本的单表增删改查

  1. 面向接口,需要有接口文件

这里的方法:增删改查

一个属性和一个值对应关系(Map,面向对象)

按照java思想理念,面向对象,没有方法是逻辑关系,它就是java bean)

(2) 面向对象,把数据库记录中的字段封装成一个类。

 Java bean在开发中,就是对应的数据库的表

你可能感兴趣的:(java,数据库)