JDBC数据库常用操作(mysql)

JDBC
英文名称:JavaDataBaseConnectivity
中文名称:java数据库连接
简称:JDBC
JDBC是一种用于执行SQL语句的JavaAPI,
可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用
程序。

一、建立数据库连接

1、引用jar文件(http://dev.mysql.com/downloads/connector/j/ 下载jar文件)

2、注册驱动Class.forName(“com.mysql.jdbc.Driver”)(只需注册一次)

3、定义数据库连接字符串URL="jdbc:mysql://127.0.0.1:3306/数据库名称?user=用户名&password=密码&useUnicode=true&characterEncoding=utf-8";

  JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…
  user:用户名
  password:密码
  useUnicode:是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true
  characterEncoding:当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk
  autoReconnect:当数据库连接异常中断时,是否自动重新连接。(默认:false)
  autoReconnectForPools:是否使用针对数据库连接池的重连策略。(默认:false)
  failOverReadOnly:自动重连成功后,连接是否设置为只读。(默认:true)
  maxReconnects:autoReconnect设置为true时,重试连接的次数 (默认3:)
  initialTimeout:autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒 2
  connectTimeout:和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 0
  socketTimeout:socket操作(读写)超时,单位:毫秒。 0表示永不超时

二、常用数据库操作

  //数据库连接字符串
    publicstaticfinalStringDRIVER="com.mysql.jdbc.Driver";
    publicstaticfinalStringURL="jdbc:mysql://127.0.0.1:3306/MyLibrary?user=root&password=123456&useUnicode=true&characterEncoding=utf-8";

1、添加数据

    publicstaticvoidinsert()throwsSQLException{
        Connectioncon=null;
        Statementst=null;
        try{
            Class.forName(DRIVER);
            con=DriverManager.getConnection(URL);
            st=con.createStatement();
            st.execute("insertintoarticle(title)values(‘标题‘);");
        }catch(ClassNotFoundExceptione){
            e.printStackTrace();
        }finally{
            con.close();
            st.close();
        }
    }

2、删除数据

    publicstaticvoiddelete(intid)throwsSQLException{
        Connectioncon=null;
        Statementst=null;
        try{
            Class.forName(DRIVER);
            con=DriverManager.getConnection(URL);
            st=con.createStatement();
            st.executeUpdate("deletefromarticlewhereid="+id+";");
        }catch(ClassNotFoundExceptione){
            e.printStackTrace();
        }finally{
            con.close();
            st.close();
        }
    }

3、修改数据

    publicstaticvoidupdate()throwsSQLException{
        Connectioncon=DriverManager.getConnection(URL);
        Statementst=con.createStatement();
        st.executeUpdate("updatearticlesettitle=‘新标题‘whereid=1;");
        con.close();
        st.close();
    }

4、查询数据

    publicstaticvoidselect()throwsSQLException{
        Connectioncon=null;
        Statementst=null;
        try{
            Class.forName(DRIVER);
            con=DriverManager.getConnection(URL);
            st=con.createStatement();
            ResultSetrs=st.executeQuery("select*fromarticle;");
            while(rs.next()){
                System.out.print(rs.getInt("id"));
                System.out.println(rs.getString("title"));
            }
            //按表结构自动输出
//            ResultSetMetaDatarsmd=rs.getMetaData();
//            for(inti=1;i<rsmd.getColumnCount();i++){
//                System.out.print(rsmd.getColumnName(i));
//                System.out.println(rsmd.getColumnTypeName(i));
//            }
        }catch(ClassNotFoundExceptione){
            e.printStackTrace();
        }finally{
            st.close();
            con.close();
        }
    }

5、参数预处理

    publicstaticvoidinsert(Stringtitle)throwsSQLException{
        Connectioncon=DriverManager.getConnection(URL);
        PreparedStatementpst=con.prepareStatement("insertintoarticle(title)values(?);");
        pst.setString(1,title);
        pst.executeUpdate();
        con.close();
        pst.close();
    }

6、批处理

    publicstaticvoidinsertBatch(String[]title)throwsSQLException{
//        Connectioncon=DriverManager.getConnection(URL);
//        Statementst=con.createStatement();
//        for(inti=0;i<title.length;i++){
//            st.addBatch("insertintoarticle(title)values(‘"+title[i]+"‘);");
//        }
//        st.executeBatch();
//        con.close();
//        st.close();

        //参数预处理+批处理
        Connectioncon=DriverManager.getConnection(URL);
        PreparedStatementpst=con.prepareStatement("insertintoarticle(title)values(?);");
        for(inti=0;i<title.length;i++){
            pst.setString(1,title[i]);
            pst.addBatch();
        }
        pst.executeBatch();
        con.close();
        pst.close();
    }

7、事务操作

  7.1、数据库事务的特性:
    原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
    一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
    隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
    持久性(durability):持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
  7.2、JDBC事务操作
  (1)setAutoCommit(Booleanauto Commit):设置是否自动提交事务;
  (2)commit():提交事务;
  (3)rollback():撤消事务;
    默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句代表一项事务,操作成功后,系统自动调用commit()来提交,否则将调用rollback()来撤消事务。在jdbc中,可以通过调用setAutoCommit(false)来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤消事务。

    publicstaticvoidtransaction()throwsSQLException{
        Connectioncon=DriverManager.getConnection(URL);
        Statementst=con.createStatement();
        try{
            con.setAutoCommit(false);//更改JDBC事务的默认提交方式
            st.executeUpdate("deletefromarticlewhereid=1;");
            st.executeUpdate("deletefromarticlewhereid=2;");
            con.commit();//提交JDBC事务
            con.setAutoCommit(true);//恢复JDBC事务的默认提交方式
        }catch(Exceptionexc){
            con.rollback();//回滚JDBC事务
        }finally{
            st.close();
            con.close();
        }
    }

8、调用mysql存储过程

    publicstaticvoidcallProcedure()throwsSQLException{
        Connectioncon=DriverManager.getConnection(URL);
        CallableStatementcst=con.prepareCall("{callproc_select(?)}");     //传入参数值
        cst.setInt(1,3);
        //如果第一个结果是ResultSet对象,则返回true;如果第一个结果是更新、添加、修改或者没有结果,则返回false
        booleanissuccess=cst.execute();
        //成功返回true,失败返回false
        System.out.println(issuccess);
    }

三、JDBC执行sql语句方法

  1、executeQuery(String sql): 执行SQL查询,并返回ResultSet 对象。

  2、executeUpdate(String sql): 可执行增,删,改,返回执行受到影响的行数。

  3、execute(String sql);:可执行任何SQL语句,返回一个布尔值,表示是否返回ResultSet 。

四、JDBC Statement类型

  1、Statement:接口提供了执行语句和获取结果的基本方法,用于执行不带参数的简单SQL语句,每次执行sql语句,数据库都要执行sql语句的编译,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。

  2、PrepareStatement:可变参数的SQL,编译一次,执行多次,效率高;安全性好,有效防止Sql注入等问题;支持批量更新,批量删除;执行的SQL语句中是可以带参数的,并支持批量执行SQL。由于采用Cache机制,则预先编译的语句,就会放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来。

  3、CallableStatement:用于执行对数据库已存储过程的调用,继承自PreparedStatement,支持带参SQL操作;支持调用存储过程,提供了对输出和输入/输出参数的支持;
在JDBC中调用存储过程的语法如下所示:
  {call过程名[(?,?)]}
  返回结果参数的过程的语法为:
  {?=call过程名[(?,?,...)]}
  不带参数的存储过程的语法类似:
  {call过程名}
  CallableStatement中定义的所有方法都用于处理OUT参数或INOUT参数的输出部分:注册OUT参数的JDBC类型(一般SQL类型)、从这些参数中检索结果,或者检查所返回的值是否为JDBCNULL。

时间: 2024-11-05 16:03:12

JDBC数据库常用操作(mysql)的相关文章

Mysql数据库常用操作

1.备份数据库 [[email protected] ~]# mysqldump -h 192.168.0.8 -uroot  -p'123456'  user >user.sql 2.查看mysql数据库字符集设置 mysql> show variables like 'character_set_%';+--------------------------+----------------------------+| Variable_name            | Value    

Oracle 数据库常用操作语句大全

Oracle 数据库常用操作语句大全 一.Oracle数据库操作 1.根据删除的时间查询出被删除的数据 select * from szdj_work_plan AS OF TIMESTAMP TO_TIMESTAMP('2018-1-19 16:51:37', 'yyyy-mm-dd hh24:mi:ss') where subject='测试一下删除0119' 1.表中唯一的最大的值 select hibernate_sequence.nextval from dual 1.创建数据库 cr

我自己的方法、组件、属性、变量、常量、数据库常用操作命名方法。

1.方法命名 a.如果是需要对接的接口方法,那么首字母需要大写,因为java服务端是大小写敏感的,且类的首个字母是大写的.如: b. 普通方法的话(即与对接无关的),那么采用首字母小写的模式,因为java里通常都是这样,这样更合理.如: 2.属性命名,由于java是大小写敏感的,所以属性一般都是加下划线的user_age这种模式,但是delphi是不区分大小写的,所以delphi中的属性 往往都是FieldName这样的模式,这里采用delphi中的命名方法.首字母大写. 3.数据库常用操作:

php模拟数据库常用操作效果

test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); echo "模拟数据库常用操作效果<br>"; echo "<a href='check.php?action=add'>执行增加操作</a><br>"; echo "<a href='check.php

MySQL数据库常用操作和技巧

MySQL数据库可以说是DBA们最常见和常用的数据库之一,MySQL的广泛应用,也使更多的人加入到学习它的行列之中.下面是老MySQL DBA总结的MySQL数据库最常见和最常使用的一些经验和技巧,分享给大家! 一.MySQL数据库的备份 使用MySQL数据库,最常用也是最重要的就是数据库备份了,所以我们先介绍数据库备份.进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的备份方法,而且又快有好(这个方法没有得到官方正式文

mysql常用操作 mysql备份与恢复

先登录mysql  ==>mysql -uroot -p 查看数据库的版本 select version(); 查看有哪些库 show datases; 查看当前处于哪个库 select database(); 查看当前登录用户 select user(); 查看某个库下面的表: use db; show tables; 查看表的字段: desc dong; 创建库 create database db1; 创建表 create  table  tb1 (`id` int(4),`name`ch

mysql数据库----python操作mysql ------pymysql和SQLAchemy

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import pymysql 4 5 # 创建连接 6 conn = pymysql.connect(

数据库-python操作mysql(pymsql)

pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同 一:安装pymysql pip3 install pymysql 二:使用pytmysql # -*- coding:utf-8 -*- __author__ = 'shisanjun' import pymysql #创建连接 conn=pymysql.connect(host="192.168.0.121",port=3306,user="admin",password=&qu

Mysql数据库常用操作整理

备注:MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构.MySQL之所以能够被数以万计的网站采用,也是由此而来.从5版本以后,陆续支持了游标.触发器.事务.存储过程等高级应用,这也给MySQL的易用性和企业服务的发展添加了重要的砝码.数据库的基础很少,但数据库的性能优化却是最重要的,所以多多优化,必有裨益. 零. 用户管理 1. 一. 数据库操作 1. 查看数据库 SHOW DAT