• java使用JDBC


    JDBC

    jDBC简介

    Java是通过JDBC技术实现对数据的访问的,JDBC是java数据库(Java database  connectivity)技术的简称,它充当java应用程序与各种不同的数据库之间的媒介,吧数据持久化,这就是一种持久化机制

    JDBC工作原理

    JDBC  API

    由Sun公司提供的,包括java应用程序的各种不同数据库交互的接口,如connection(连接) Statement(执行sql命令)   ResultSet(返回结果集)   PreparedStatement接口。

    JDBC  Driver Manager

    JDBC驱动管理程序,负责各种不同的jDBC驱动,把Java应用程序连接到jDBC驱动程序上,位于jdk的java.sql包下面

    JDBC驱动

    由各厂家提供的,负责连接不同的数据库,mysql和oracle需要不同的数据库。

    JDBC  Api介绍

    DriverManager:装载驱动程序,并且为创建数据库连接提供支持

    Connection:负责连接数据量并且传输数据任务

    Statement:由connection产生,负责执行sql语句

    resultSet:负责保存Statement执行返回的结果集

    preparedStatement:是statement的子接口,由connection产生,也是负责执行sql语句。他的安全性更高,高可读性

    jDBC访问数据库的步骤

    1. 加载JDBC驱动(可能会引发异常,所以用ClassNotFoundExeception来声明try——catch)

    a)         Class.forName(“JDBc驱动类名称”);

    1. 与数据库建立连接

    a)         Connection conn=DriverManager.getConnection(“数据库连接字符串“,”数据库用户名”,”密码”);

    1. 发生sql语句,并且返回结果

    a)         Statement st=conn.createStatement();   //创建执行sql语句的对象

    b)         ResultSet rs=statement.executeQuery(“sql语句”);   //返回结果集

    1. 处理返回的结果

    While(rs.next()){   //判断是否有下一行的数据

             //读取

             Int id=rs.getInt(“id”); 或者  int id=rs.getInt(0);

    };

    连接数据库

    使用纯java方式连接数据库

    需要引入jar包,mysql-connector-java-5.1.0-bin.jar

    package cn.jbit.example02;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import org.apache.log4j.Logger;

    public class example02 {

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

             public static void main(String[] args) {             

                       Connection conn=null;

                       //加载驱动

                       try {                   

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

                       } catch (ClassNotFoundException e) {

                                // TODO: handle exception

                                logger.error(e);

                       }

                       try {                   

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

                                logger.warn("建立连接成功啦");

                                System.out.println("建立连接成功啦");

                       } catch (Exception e) {

                                // TODO: handle exception

                                logger.error(e);

                       }finally {

                                try {

                                         if(null!=conn) {

                                                   conn.close();

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

                                         }

                                } catch (Exception e) {

                                         // TODO: handle exception

                                         logger.error(e);

                                }

                       }

             }

    }

    以上是连接数据库的步骤

    Statement接口和ResultSet接口

    Connection接口的方法

    方法名称

    作用

    Void  close()

    立即释放 连接资源

    Statement crementstatement()

    创建一个Statement的对象,来讲sql语句发送到数据库

    PreparedStatement preparedStatement(String sql)

    创建一个preparedStatement对象将参赛化的sql语句发送到数据库

    Boolean  isCloseed()

    查询connection是否关闭

    Statement接口的常用方法

    方法名称

    作用

    Result ExecuteQuery(String sql)

    执行sql查询并且返回ResultSet的对象

    Int executeUpdate(String sql)

    可以执行  insert,update,delete的操作,返回受影响行数

    Boolean execute(String sql)

    可以执行任意的sql语句,若执行Result对象,则返回true,若执行更新计数或者不存在的结果,返回false

    ResultSet接口常用的方法

    方法名称

    作用

    Boolean next()

    判断,将光标移到当前位置的下一行

    Boolean previous()

    将光标移到上一行

    Void close()

    关闭ResultSet对象

    Int  getInt(int CloumnIndex)

    以int 下标的形式获取该列的值

    Int  getInt(int CloumnName)

    以int列名的形式获取该列的值

    float  getFloate(int CloumnIndex)

    以float 下标的形式获取该列的值

    Float  getfloat(int CloumnName)

    以float列名的形式获取该列的值

    String  getString(int CloumnIndex)

    以String下标的形式获取该列的值

    String  getString(int CloumnName)

    以String列名的形式获取该列的值

    Int getRow()

    得到光标当前所指行的行号

    Boolean  absolute(int row)

    将光标移动到指定的行

    PreparedStatement接口

    为了防止sql注入攻击,原因是statement接口方法是要进行sql语句的拼接.不仅麻烦而且存在安全隐患,PreparedStatement解决了这个问题

    使用:PreparedStatement接口

    方法名称

    作用

    Boolean execute()

    `可以执行任意的sql语句,若执行Result对象,则返回true,若执行更新计数或者不存在的结果,返回false

    ResultSet executeQuery()

    执行sql查询,返回ResultSet的对象

    Int  executeUpdate()

    可以执行  insert,update,delete的操作,返回受影响行数

    Void setInt(int index,int x)

    将指定的参数设置给java int值,也就是给上面的sql语句的格式(?)设置值,前:下标1开始,后:值

    Void setobject(int index,int x)

    给定对象设置指定参数

    步骤:

    创建PreparedStatement对象

    通过connection的preparedStatement(String sql) 方法创建PreparedStatement对象,sql语句可以一个或者多个参数,值用一个?占位符表示。

    String sql=Update dog set name=?,health=? Where id=?

    PreparedStatement  ps=conn.preparedStatement(String sql);

    给每个占位符的参数设置值

    Ps.setInt(int index,int values);    //第一个:是下标从1开始,第二个:是值

    Ps.setString(int index,Stringvalues);    //第一个:是下标从1开始,第二个:是值

    执行sql语句

    在设置各个参数值后,就可以调用preparedStatement的方法了(resultSet  executeQuery), int execute() ,  boolean execute() 

  • 相关阅读:
    【LeetCode】145. Binary Tree Postorder Traversal (3 solutions)
    【LeetCode】151. Reverse Words in a String
    【LeetCode】152. Maximum Product Subarray
    【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)
    如何使用 Chrome 浏览器调试动态加载的 Javascript 脚本
    如何对数据库中的表以及表中的字段进行重命名
    关于 sql server 数据库权限乱七八糟的一些东西
    对 sql server 数据库的备份进行加密
    使用vs的查找功能,简单大概的统计vs中的代码行数
    在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
  • 原文地址:https://www.cnblogs.com/pengpeng520/p/7642615.html
Copyright © 2020-2023  润新知