使用JDBC操作数据库时对各个语句理解的意思

这里列举了使用JDBC操作数据库时我对各个语句理解的意思,如有错误请指正。

目录

碰到的null

Connection conn = null;

PreparedStatement ptst = null;

ResultSet rs = null;

if (rs != null) {rs.close();}

编码问题

request.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

驱动连接问题

Class.forName(driver);

conn = DriverManager.getConnection(url,user,password);

conn = new ConnectionMethod().ConnectionGet();

文本问题

e.printStackTrace();

PrintWriter out = response.getWriter();

异常

SQLException e

Statement对象的使用

Statement

st = conn.createStatement();

rs = st.executeQuery(selectUsername);

ptst = (PreparedStatement)

            conn.prepareStatement(selectPassword);

ptst.setString(1, loginName);

rs = ptst.executeQuery();

passwordList.add(rs.getString(1));

强制刷新

flush();


碰到的null

Connection conn = null;

PreparedStatement ptst = null;

是使用懒加载减少内存浪费。就是等到它们没被使用时,java垃圾回收机制能将该部分内存释放

ResultSet rs = null;

  1. 这句话一般声明在try catch块外,然后再在try catch块里面初始化
  2. 声明在外边是为了可以在最后关闭rs,完成资源释放。

if (rs != null) {rs.close();}

这句话一般放在后面,是因为数据库资源允许的并发访问连接数量有限,因此,当数据库资源使用完毕后,一定要释放资源。每一次查询后要关闭rs,不然连接数据库时就会报错。


编码问题

request.setCharacterEncoding("UTF-8");

设置请求编码

response.setContentType("text/html;charset=UTF-8");

设置响应方式和编码


驱动连接问题

Class.forName(driver);

  1. 是使用纯java驱动连接mysql数据库,加载驱动程序到java解释器中。根本目的就是为了调用DriverManager.registerDriver,加载要连接数据库的驱动程序。
  2. 一般在后面会写一个ClassNotFoundException e的异常类,这个是在运行时找不到所需的类的异常,也就是如果Class.forName(driver);找不到相关驱动,该异常类就会报异常。

conn = DriverManager.getConnection(url,user,password);

  1. 是DriverManager类跟踪已注册的驱动程序,通过getConnection(URL)方法, 找到一个能够连接至URL中指定的数据库驱动程序。

conn = new ConnectionMethod().ConnectionGet();

  1. 即调用ConnectionMethod类的ConnectionGet()方法,从而获取与数据库的链接,一般写在一个Servlet里,这样就可以调用外面的连接类。
  2. ConnectionMethod类你也可以改名成其他的,只是我这里写成这个名字。


文本问题

e.printStackTrace();

经常出现在异常类中,是在命令行打印异常信息在程序中出错的位置及原因。

PrintWriter out = response.getWriter();

  1. out是一个PrintWriter对象,该对象可以将字符文本返回给客户端。
  2. 这个字符打印流使用返回的字符编码getCharacterEncoding()。如果响应的字符编码没被指定,也就是获取编写器会将编码格式确定为默认返回的ISO-8859-1编码格式。
  3. 如果发生输入或输出异常会被java.io.IOException捕获


异常

SQLException e

实例化SQLException类型的对象,当try块出现异常时就捕捉异常并做响应的处理。


Statement对象的使用

Statement

是 Java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。

st = conn.createStatement();

是用createStatement()创建一个 Statement 对象,为了将下面传入的 SQL 语句发送到数据库

rs = st.executeQuery(selectUsername);

这里的selectUsername是我写的一个String类型的sql语句,发送该sql语句到数据库后执行,后从数据库返回得到结果集rs。

ptst = (PreparedStatement)

            conn.prepareStatement(selectPassword);

  1. 这里的selectPassword是我写的一个String类型的sql语句,prepareStatement()会将我的该条SQL语句发送给数据库预编译,PreparedStatement会引用着预编译后的结果,这个结果就是ptst
  2. 可以给PreparedStatement对象多次传入不同的参数并执行。
  • 使用该方法可以减少SQL编译次数,提高效率。
  • 使用该方法安全性更高,没有SQL注入的隐患。

ptst.setString(1, loginName);

        设置ptst参数,即为第一个参数设置一个string 类型的值,设置的值为loginName。

rs = ptst.executeQuery();

        使用java环境自带的执行查询的方法executeQuery()查询当前loginName下的内容,返回ResultSet 集合rs

passwordList.add(rs.getString(1));

是获取结果集中第一列的数据。如果你写成2就是获取第二列的数据。


强制刷新

flush();

  1. 英文名是刷新的意思,它可以提交PrintWriter的响应。
  2. IO流也有缓冲区这种东西,对于输出,较短的字符序列格式化之后并不马上输出,而是保存在缓冲区里,待累积到一定规模之后再传递到外部设备。而flush() 是要求立即将缓冲区的数据输出到接收方,从而清空缓冲区,也就是强制刷新。这样做可以防止没有调用flush();就直接调用close()方法关闭读写流而造成的数据丢失。

JDBC确实有很多需要学习的地方,需要不断钻研不断学习。

你可能感兴趣的:(Web,HTML,大数据,java,数据库,servlet,web)