zoukankan      html  css  js  c++  java
  • JSP Connect Database

    JDBC简介

    在Java技术中,访问数据库的技术叫做JDBC,它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库进行添加、删除、修改和查询。
    JDBC相关的API存在java.sql包中。主要包括以下类或者接口:

    • java.sql.Connection: 负责数据库的连接
    • java.sql.Statement, 负责执行SQL语句
    • java.sql.ResultSet, 负责存放查询结果

    由于JSP不知道具体连接的是哪一种数据库,而各种数据库产品,由于厂商不一样,连接的方式也不一样。所以这里给出了解决方案:
    JDBC提供了“驱动程序”的概念,即对于不同的数据库,使用不同的驱动即可。

    JDBC操作

    1. 指定驱动(以SQL Server数据库为例)
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    2. 获取连接:

    1
    2
    Connection conn=DriverManager.getConnection(
    "url=?;databaseName=?;user=?;password=?");
    1. 使用statement接口运行SQL语句
    1
    2
    3
    4
    5
    Statement stat=conn.createStatement();

    stat.execute(sql);
    //SQL查询
    stat.executeQuery(sql);
    1. 执行SQL语句
    2. 关闭数据库
    1
    2
    stat.close();
    conn.close();

    SQL查询

    这里之所以需要单独讲解SQL查询,是因为它和其他SQL操作不同。
    首先它返回的是一个查询的结果ResultSet

    1
    ResultSet rs = stat.executeQuery(sql)

    这个时候结果就已经放在了rs变量中了。
    其次我们可以把rs理解成一个指针,通过rs.next()来移动指针。
    rs初始指向第一行的前一行,所以如果要访问第一行,需要先执行rs.next(),然后再通过rs.getString()来获取第一行的值。
    如果有多行,可以通过while循环来获取

    1
    2
    大专栏  JSP Connect Database/>3
    4
    5
    while(rs.next()){
    String stuno = rs.getString("STUNO");
    String stuname=rs.getString("STUNAME");
    out.println(stuno+" "+stuname+"<br>");
    }

    注意: getString()也可以来获取第i列的值:getString(i)

    使用PreparedStatement

    PreparedStatement是Statement的子接口,功能和Statement类似,只是使用?来代替了需要插入的参数。

    1
    2
    3
    4
    5
    String sql="INSERT INTO STUDENT VALUES(STUNO,STUNAME,STUSEX) VALUES(?,?,?)";
    PrepareStatement ps = conn.prepareStatement(sql);
    ps.setString(1,studno);
    ps.setString(2,stuname);
    ps.setString(3.stusex);

    事务

    在银行转账时,要对数据库进行两个操作,即一个账户的前减少,将另一个账户的钱增多。但是由于操作的先后顺序,如果在两个操作之间发生故障,则会导致数据不一致,因为我们需要一个事务,是在两条语句都被执行成功后,数据才真正的被放入数据库,否则操作回滚(rollback)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try{
    //设置不要自动提交
    conn.setAutuCommit(false);
    stat.execute(sql1);
    stat.execute(sql2);
    //提交以上操作
    conn.commit();
    }catch(Exception e){
    conn.rollback();
    }finally{
    conn.close();
    }
  • 相关阅读:
    查询SQL的null与''
    JS不间断向上滚动代码
    JS不间断向左滚动代码
    Vcastr 3.0 flv player播放器
    网站W3C标准检测
    ASP.NET网站伪静态下使用中文URL
    Js禁止右键、禁止选中、禁止复制
    游标的使用
    触发器实例
    存储过程中新建临时表
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12360845.html
Copyright © 2011-2022 走看看