• JDBC连接数据库程序


      废话少说,看了尚学堂的视频以及某大神的博客,总结出以下.(本文以oracle数据库为例)

    创建一个JDBC连接数据库的程序,需要着手做以下几件事情:

    注意,这里边使用了java.sql.Statement; java.sql.connection;等包,为了方便这里直接使用了java.sql.*;

    一.jdbc怎么识别不同数据库呢,例如oracle.mysql.等,

      找到相应数据库的jdbc的类库,不同的数据库针对jdbc做出了不同的类库.找到类库以后需要找到一个driver的驱动,这个驱动就是提供jdbc来连接数据库的,那么这个驱动在哪呢?

      

    没错,类库就是一个jar包.项目bulid path引进jar包.

      

    然后看到该jar包下面有一个专门做驱动的类OracleDriver.class.

    在要编写的JDBC连接数据的java类中引入此类:

      

    Class.forName("oracle.jdbc.driver.OracleDriver");

    //会抛出没有找到该类的异常,注意添加异常处理

      或者使用

    new oracle.jdbc.driver,OracleDriver();

     成功加载后,会将Driver类的实例注册到DriverManager类中。

    二.连接数据库

    向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接。
      

    String url = "jdbc:oracle:thin:@192.168.104.210:1521/orcl";   //JDBC的连接的URL
    String dbname = "shgbyp";
    String dbpwd = "dreamsoft";
    Connection conn = DriverManager.getConnection(url, dbname, dbpwd);

    三.创建sql语句并执行sql语句

    这里使用了java.sql.statement包;

    首先创建一个statement语句

    Statement stmt = conn.createStatement();

    然后调用Statement对象,在Statement中有一个方法是用来执行sql语句的:

    String sql ="select * from a01"
    stmt.executeQuery(sql);

    在这之后就又有问题了,只执行sql语句,那么我们也需要去的结果呀;

    在来看操作手册中,关于executeQuery()方法有一个返回值类型:ResultSet(结果集类型)

    ResultSet rs = stmt.executeQuery(sql);

    现在好了,拿到了结果集,之后我们是不是需要循环遍历结果集从而拿到我们想要的结果呢?

    同时把结果System.out.println();输出出来

    while(rs.next()){
      //比如我们以string类型只拿腌a01表中的personcode
      String result = rs.getString("personcde"); 
    System.out.println(result); }

    这样的话,以上是不是就完善了呢?

    千万记住,在每次新建资源后要记得释放资源,以及所有中的异常处理最好用try/catch来处理!

    //遵守先建后关的资管规则
    //记住代码的严谨性,判空,因为如果为空,代表之前没有新建资源,就不存在关闭资源这一说法!
    if(rs != null){
      rs.close();
    } if(stmt != null){   stmt.close();
    }
    if(conn != null){   conn.close();
    }

     四.执行程序

      

    以上就ok啦,再接再厉!

    /***************************完美分隔符,继续完善******************************/

    加一.ExecuteUpdate()执行增删改语句

    上边的话只是执行了查询操作,并且遍历返回了查询结果,那么,如果我需要对数据进行增删改等无返回结果的操作呢?

    这时候需要使用ExecuteUpdate()方法:

    String update_sql = "update a01 set personcode = '123456' where a01name = '曾建杰'"
    //可以看到这句话其实是没有返回结果的
    //回忆下,executeQuery的返回类型是结果集(ResultSet),而在这里,ExecuteUpdate的返回结果是int类型,而在我的理解范围内,其实返回结果类型应该是boolean类型?
    int update_res = conn.ExecuteUpdate(update_sql); 
    //查看其是否执行 有两种办法,1是查看eclipse中的dataSource这个视图,二是查看数据库,看是否进行了操作.

    加二.PreparedStatement()预编译语句

    上边所写的sql语句都是赋的定值,那么如果我们换一种赋值方式呢?比如说

    PreparedStatement pstmt = conn.prepareStatement("UPDATE A01 SET PERSONCODE = ? WHERE AO1name = ?");
    pstmt.setString(1, "123456"); //序号,所要赋的值
    pstmt.setString(2, "曾建杰");

    SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

    你以后的气质里,藏着你走过的路,读过的书和爱过的人。 ​​​
  • 相关阅读:
    OpenStack--Rabbitmq组件消息队列
    Redis-主从
    haproxy mycat mysql 读写分离MHA高可用
    mysql小白系列_14 线上故障分析与排错
    mysql小白系列_13 Online DDL
    mysql小白系列_12 sysbench
    mysql小白系列_11 MHA补充
    mysql小白系列_11 MHA
    mysql小白系列_10 mysql主从复制原理
    mysql小白系列_09 mysql性能优化关键点
  • 原文地址:https://www.cnblogs.com/Sophias/p/6945701.html
Copyright © 2020-2023  润新知