博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jdbc程序编写 d7
阅读量:5254 次
发布时间:2019-06-14

本文共 3285 字,大约阅读时间需要 10 分钟。

一.jdbc的编写

  1.首先导入jar包

  • 导入数据库厂商提供的驱动jar包,我们这里使用MySQL,所以导入MySQL驱动 mysql-connector-java-5.1.7-bin.jar,这两个包需要放在web-inf里lib下面。
  • 如果使用的是oracle数据的话就导入ojdbc6.jar。

  2.注册驱动

  驱动程序的静态代码中,会自动将驱动程序通过DriverManager进行注册,所以我们要做的只是将驱动类加载进JDK中,静态代码块将会自动执行。

  3.获取数据库连接

   获取连接的意思就是调用DriverManagergetConnection()方法即可,里面用到了url,password,username三个参数,其中url是数据库的端口号以及库名,password是创建数据库的密码,username默认的orcl或者mysql的root,他的命名是  jdbc:mysql://主机地址:端口号/库名 对应的  jdbc:mysql://localhost:3306/test

 jdbc:oracle:thin:@主机地址:端口号:数据库名 对应的 jdbc:oracle:thin:@localhost:1521:atguigu 其中最后的是自己定义的,前面的到端口号都基本上是默认的。

 

  4.获取Statement对象

   获取Statement对象用来执行SQL语句,通过Connection对象的相关方法即可。值得注意的是它存在漏洞,这是黑客攻击的重点,所以一般不使用,取而代之的是prepareStatement,后面操作的就是这样的

   5.执行Sql语句

  在获取数据库连接和Statement对象后,正式建立了联系,再进行java代码对数据库的增删改插,进一步从前台调数据同java和后台的数据库进行数据的交换。同时也可以把数据库数据拿出来作为比较。

   6.resultSet接口

  在进行jdbc查询操作的时候会返回一个result对象,只有查询的时候返回一个resultset类型的,他用了st.executeQuery(sql2);它next()的返回值是一个boolean的类型,如果数据库存在这样的值就返回true,否则继续走直到所有数据查询玩。对应的增删改就只要判断数据库里的数据有什么改动,用到了executeUpdate(sql1);也就是说返回一个数值型的,如果操作了就大于0,可用来判断是否增删改了,如果想要判断插入的数据还是要调用executeQuery()。

 

   7.释放资源

  在所有操作都执行完了就要关闭连接了。关闭的顺序与连接的顺序正好反过来,先关ResultSetStatement、最后关Connection。这样才不会出错

 

 

 
package com.neuedu.web;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;public class TestConnection {    public static void main(String[] args) throws Exception {        // 由于要try、catch许多异常,防止代码过于繁琐,就直接抛出异常        String username="root";        String password="yantao1";        String url="jdbc:mysql://localhost:3306/books";        String driverClass="com.mysql.jdbc.Driver";      //首先用来获取数据库地址,用户名和密码。另外定义了一个加载驱动的字符串。                Class.forName(driverClass);       //加载驱动也可以直接Class.forName("com.mysql.jdbc.Driver");        Connection conn=DriverManager.getConnection(url,username,password);     //获取数据库的连接通过驱动程序的getConnection方法。        Statement st=conn.createStatement();        //上面的一行存在sql漏洞问题,具体的是如果选择查询就会出现where后面的判断语句,如果有or 1=1,必定成立的语句就会出错,黑客攻击的漏洞。        String sql="insert into teacher(id,aname) values(null,'咕噜噜')";        String sql1="update teacher set aname='咕噜' where aname in('咕噜')";        String sql2="select id,aname from teacher";        PreparedStatement st1=conn.prepareStatement(sql);           //conn.executeStatement这个方法就是来解决漏洞问题的。它与上面的不同在于它是上面的子类,需要在里面通过sql的string类型才可以调用,不能调用空的。        //父类的接口指向子类就是多态,同一个变量可以指向多个对象,一种事物多种形态。               int execute=st1.executeUpdate(sql1);     //这个是用来判断增删改的,当数据库数据发生了变化,对应的数据库更新了,所以返回了一个影响了行的行数的int类型,可以判断他大于0说明进行了数据库的操作。        ResultSet rs=st1.executeQuery(sql2);     //这个是在数据库里寻找,如果有的话就返回一个对象,否则返回的是空。        if(execute>0){            System.out.println(execute);          System.out.println("成功");        }        //如果发生了数据变化就输出。        while (rs.next()) {            System.out.println(rs.getInt(1)+rs.getString("aname"));     //对于这个用了一个迭代,就是每一行都判断是否相等,如果不想等鼠标向下一行,知道所有的行都执行完了,才可以结束。        }        if(rs!=null){            rs.close();        }        if(st!=null){            st.close();        }        if(conn!=null){            conn.close();        }          //最后关闭所有的连接,释放资源。    }}
另外这个将连接操作和关闭一起操作了,十分的繁琐,而没有封装,所有代码都公开,在实际的业务里是不存在的,这里可以定义一个连接类,在定一个业务层,业务层调用连接层的东西, 最后将写一个最总的类用来调用所有的类。

 

 

 

转载于:https://www.cnblogs.com/guomingyt/p/7846427.html

你可能感兴趣的文章
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
【欧拉函数模板题】最大公约数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
织梦仿站第三课:网站的文件分割
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
用sql删除数据库重复的数据的方法
查看>>
学习笔记21—PS换图片背景
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
Spring3.0 AOP 具体解释
查看>>
我的Hook学习笔记
查看>>
EasyUI DataGrid 中字段 formatter 格式化不起作用
查看>>