网络编程
网络编程
IDBC
网络编程 2019-11-29 03:06

●客户生机勃勃旦不关闭ResultSet,当Statement关闭,重新实行或用来从多结果类别中获取下二个结果时,该ResultSet将被自动关闭

      mysql:子协议

1、java.sql.Drivermanager类 : 创设连接

以float的情势获得结果集的不胜钱行内定列号的值

【2】JDBC的编码步骤

a、注册驱动

DriverManager.registerDriver(new com.mysql.jdbc.Driver(卡塔尔(英语:State of Qatar));不建议接收

原因有2个:

> 引致驱动被注册2次。

> 猛烈正视数据库的驱动jar

淹没办法:(反射机制)

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

 

建议使用

      这个参数的值在SQL语句创造时未被钦点,而是为每种输入参数保留二个致意(“?“)作为占位符;

            释放能源,关闭连接。

二、开拓一个JDBC程序(主要)

落到实处查询数据库中的数据呈现在java的调控台北

1、创造数量库表,并向表中增加测量检验数据

create database day06;

use day06;

create table users(

       id int primary key auto_increment,

       name varchar(40),

       password varchar(40),

       email varchar(60),

       birthday date

)character set utf8 collate utf8_general_ci;

 

insert into users(name,password,email,birthday) values('zs','123456','zs@sina.com','1980-12-04');

insert into users(name,password,email,birthday) values('lisi','123456','lisi@sina.com','1981-12-04');

insert into users(name,password,email,birthday) values('wangwu','123456','wangwu@sina.com','1979-12-04');

 

 澳门苹果官网 1

 

2、创设java project项目,增加数据库驱动(*.jar)

3、实现JDBC操作

              //1、加载驱动

        Class.forName(“com.mysql.jdbc.Driver”);

              //2、获取连接

        Connection  conn = DrivateManager.getConnection(“jdbc:mysql://localhost:8080/数据库”,“root”,”root”);

              //3、得到实践sql语句的Statement对象

澳门苹果官网,        Statement seat = conn.createStatement ();

              //4、施行sql语句,并重返结果

  1. 返回int

Int  rs = Stmt. executeUpdate

  1. 返回 ResultSet

ResultSet  rs  = stmt.executeQuery(“sql语句”);

              //5、管理结果

              //6关闭财富

       各种 close()

 澳门苹果官网 2

 

 澳门苹果官网 3

 

     } catch (SQLException e) {

  DriverManager:类,驱动微机

四、使用JDBC实现CRUD操作

  ●二种常用的驱动方式:第风流罗曼蒂克种是JDBC-ODBC桥连形式,适用于个人支出与测量检验,他经过ODBC与数据库举办连接。

  Statement:语句对象的接口

b、与数据库建构连接

static Connection getConnection(String url, String user, String password)

意欲确立到给定数据库 U瑞鹰L 的总是。

getConnection("jdbc:mysql://localhost:3306/day06", "root", "root");

U奥迪Q5L:SUN公司与数据库厂家之间的风度翩翩种协议。

Jdbc  :  mysql : //localhost:3306/day06

协议   子协议    IP :    端口号 数据库

mysql: jdbc:mysql://localhost:3306/day14 或然jdbc:mysql:///day14(暗中同意本机连接)

oracle: jdbc:oracle:thin:@localhost:1521:sid

              Properties info = new Properties(卡塔尔(英语:State of Qatar);//要参谋数据库文书档案

              info.setProperty("user", "root");

              info.setProperty("password","root");

澳门苹果官网 4

 

 getConnection(String url, Properties info)

 

IDBC。getConnection(String url)

DriverManager.getConnection("jdbc:mysql://localhost:3306/day14?user=root&password=root");

 

        }

【1】什么是JDBC?    JDBC有哪些用?

三、JDBC常用的类和接口详细解释

         ★提升了SQL语句施行的属性

    4卡塔尔、关闭连接

3、java.sql.Statement接口: 操作sql语句,并回到相应结果的对象(小卡车)

 

接口的实今后数据库驱动中。用于施行静态 SQL 语句并赶回它所生成结果的靶子。

(ResultSet重返)  executeQuery(String sql卡塔尔国依据查询语句重返结果集。只好实行select语句。

(int返回) executeUpdate(String sql卡塔尔 依照实行的DML(insert update delete)语句,重返受影响的行数。增加和删除改

 澳门苹果官网 5

 

 澳门苹果官网 6

 

 

(boolean再次回到) execute(String sql卡塔尔(قطر‎  此方法能够实施任意sql语句。重返boolean值,表示是不是再次回到ResultSet结果集。仅当执行select语句,且有重临结果时回来true, 别的语句都回到false;是个奇葩

      (ResultSet executeQuery()、int executeUpdate()、Boolean execute())之一来实施SQL语句;

            每一个接连都挤占着数据库有限的能源,

JDBC

1、JDBC:JDBA是Java数据库连接(Java DataBase Connectivity卡塔尔(英语:State of Qatar)手艺的简单称谓,提供连接种种常用数据库的技巧;

      lib代表存放项目中第三方提供的jar

a、封装结果集的。

提供三个游标,暗中同意游标指向结果集第后生可畏行从前。

调用一遍next(卡塔尔国,游标向下移动生机勃勃行。

提供一些get方法。

 

封装数据的秘技

Object getObject(int columnIndex卡塔尔; 依照序号取值,索引从1方始

Object getObject(String ColomnName卡塔尔; 依照列名取值。

将结果聚集的多少封装到javaBean中

java的数据类型与数据库中的类型的涉嫌

byte          tityint

short         smallint

int           int

long          bigint

float         float

double        double

String        char varchar

        Date         date

boolean next(卡塔尔(قطر‎ 将光标从今今后时此刻职分向下移动豆蔻年华行

int getInt(int colIndex卡塔尔   以int方式拿到ResultSet结果集当前进钦赐列号值

int getInt(String colLabel卡塔尔(قطر‎     以int形式得到ResultSet结果集当前进钦点列名值

float getFloat(int colIndex卡塔尔国    以float情势获得ResultSet结果集当前进内定列号值

float getFloat(String colLabel卡塔尔(英语:State of Qatar)      以float方式获得ResultSet结果集当前行钦赐列名值

String getString(int colIndex卡塔尔(英语:State of Qatar)       以String 情势得到ResultSet结果集当前进钦定列号值

String getString(String colLabel)  以String形式得到ResultSet结果集当前进钦赐列名值

Date getDate(int columnIndex); 

Date getDate(String columnName);

void close()    关闭ResultSet 对象

 

  ●ResuoltSet接口常用方法及效果

    2卡塔尔(قطر‎、创设连接

b、可活动游标的措施

 boolean next(卡塔尔(قطر‎  将光标从当下地点向前移豆蔻梢头行。
        boolean previous()

             将光标移动到此 ResultSet 对象的上风流倜傥行。

     boolean absolute(int row卡塔尔 参数是日前行的目录,从1上马

              依据行的目录定位运动的钦命索引行。

 void afterLast()

          将光标移动到最后,适逢其会坐落于最终后生可畏行之后。

 void beforeFirst()

          将光标移动到开端,恰巧坐落于第大器晚成行以前。

5、释放能源

财富有限,要精确关闭。

   澳门苹果官网 7

澳门苹果官网 8

 

●数据连接字符串,数据库名、密码书写错误、现身SQLException至极;

JDBC(Java DataBase Connectivity,java数据库三番两次)是意气风发种用于实行SQL语句的Java API,可感到种种关全面据库提供统意气风发访谈,它由生龙活虎组用Java语言编纂的类和接口组成。JDBC提供了生机勃勃种口径,据此可以营造更加高端的工具和接口,使数据库开拓职员能够编写数据库应用程序。

一、JDBC概述

为何要使用JDBC?

JDBC: java  database  connectivity  SUN公司提供的生龙活虎套操作数据库的规范标准。

JDBC与数据库驱动的关系:接口与得以完成的涉嫌。

JDBC标准(了解多个着力指标):

DriverManager:用于注册驱动

Connection: 表示与数据库创造的总是

Statement: 操作数据库sql语句的对象

ResultSet: 结果集或一张虚拟表

付出一个JDBC程序的备选干活:

> JDBC规范在哪儿:

 JDK中:

java.sql.*;

javax.sql.*;

> 数据库厂家提供的驱动:jar文件

  *.jar

 澳门苹果官网 9

 

import java.sql.DriverManager;

            数据库软件並且扶植的连接数是有限的,

4、java.sql.ResultSet接口: 结果集(客商端存表数据的靶子)

那只是三个警戒,更改如下:

      user:账号

2、java.sql.Connection接口:三个三番三次

接口的贯彻在数据库驱动中。全部与数据库人机联作都是基于连接对象的。

 

Statement  createStatement(卡塔尔; //创设操作sql语句的对象

 

方法名称

作用

boolean execute()

在此PreParedStatement对象中执行SQL语句,该语句可以是任何SQL语句

如结果是Result对象,则返回true,如果结果是更新计数或者没结果,则返回false

ResultSet executeQuery()

在此PreParedStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象

 

int executeUpdate()

在此PreParedStatement对象执行SQL语句,该语句必须是DML语句,

如Insert,update或delete语句,

或是无返回内容的sql语句,如DDL语句,返回值是执行该操作所影响的行数。

void setInt(int index,int x)

将指定参数设置为给定Java int值,设置其他类型参数的方法与此类型。

如setFloat(int index,float x)、setDouble(int index,double x)等;

void setObject(int index,Object x)

使用给定对象设置指定参数的值。

            制造java项目,在档期的顺序中创制名字为lib的目录

五、完毕二个客商登入的功用剖析

 澳门苹果官网 10

 

     try {

      DriverManager 驱动微电脑

六、SQL注入难点:preparedStatement

preparedStatement:预编译对象, 是Statement对象的子类。

特点:

属性要高

会把sql语句先编译

sql语句中的参数会发生变化,过滤掉客商输入的着重字。

 澳门苹果官网 11

 

补偿例子:

 澳门苹果官网 12

 

(警示:不提出在并未有服务器身份验证的情况下树立SSL连接。依据MySQL 5.5.45+, 5.6.26+和5.7.6+的渴求,若无设置显式选项,则必须默许创立SSL连接。您要求经过设置useSSL=false显式地剥夺SSL,也许安装useSSL=true并为服务器证书验证提供信赖存储。)

      password:密码

        System.out.println("创立连接成功!"卡塔尔(英语:State of Qatar);

API:

      1、创建PreParedStatement对象:

    3卡塔尔(英语:State of Qatar)、发送SQL语句并进行

                    System.out.println("关闭连接成功!");

      ResultSet executeQuery(String sql);

      应该运用PreParedStatement对象来实施数据库操作,以提升作用;

      Connection getConnection(String url,String user,String password);

以int的样式得到结果集的不得了钱行内定列号的值

  Connection getConnection(url,user,password);

"jdbc:mysql://localhost:3306/test?useSSL=false";

      url:连接数据库之处

   private static Logger logger = Logger.getLogger(Test.class.getName());

            驱动程序:便是JDBC那组接口的兑现类和别的职能类

import java.sql.SQLException;

      jdbc:主协议

                         Eg: pst.executeUpdate();

轻巧地说,JDBC 可做三件事:与数据库创设连接、发送 操作数据库的讲话并管理结果。

收获光标当前所指行的行号

      Statement:表示语句对象

               }

            由数据库厂家提供

  (4)ResultSet接口:担当保存和管理Statement推行后所发出的查询结果。

1卡塔尔、加载驱动程序

        logger.error(e);

      ?useSSL=true :为网络通讯提供安全及数据完整性的生龙活虎种安全合同,默感觉false

         ★在安装了生机勃勃一输入参数的值后,就足以调用PreParedStatement接口的三个试行形式

            用来发送insert,update,delete语句,重返

方法名称

作用

void close()

立即释放此Connection对象的数据库和JDBC资源

Statement createStatement()

创建一个Statement对象将SQL语句发送到数据库

PreparedStatement preparedStatement(String sql)

创建一个PreparedStatement对象来将参数化的SQL语句发送到数据

boolean isClosed()

查询此Connection对象是否已经被关闭

      close(卡塔尔国;关闭语句对象,关闭连接对象

●要先按ResultSet结果集,后Statement,最终Connection的次第关闭,因为ResultSet是透过Statement实践SQL命令拿到的,

            用来发送select语句,重临结果集

 

      DriverManager提供多少个静态方法,创建与数据库的接连几日

url= jdbc:mysql://27.0.0.1:3306/epet?useUnicode=true&characterEncoding=utf-8;

  Connection:连接对象的接口

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

      ip:远程其余机器,就是具体的IP, 如若IP为本机:127.0.0.1或localhost

int getInt(String columnLable)

            影响多少库表的记录数

     3、执行SQL语句:

  发送查询SQL语句

         ★升高了代码的可读性和可维护性

            导入mysql jar包

在实际上项目只要采纳MySQL数据库,为了制止恐怕现身乱码难题,将点名数据库连接的编码集为UTF8

  int executeUpdate(String sql);

        logger.error(e);

  ResultSet executeQuery(String sql);

办法名称

      jdbc:mysql://ip:3306/数据库名

                    conn.close();

            将lib中的jar 配置到项指标类路径下

}

  发送增加和删除改SQL语句

●数据库操作甘休后,未有关闭数据库连接,招致仍攻陷系统能源;

      int executeUpdate(String sql);

       // 1.加载驱动

  Statement createStatement();

以int的款型获得结果集的这么些钱行内定列名的值

            开启连接,程序奉行结束之后必得立时

         ★升高了安全性

SQL SERVER:

以float的款型拿到结果集的不胜钱行钦定列名的值

本地的几种表现方法:

●关闭数据库连接语句未有内置finally语句块中,引致说话或许未有被实施;