javaweb开发学习JDBC应用三

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%
//定义数据库驱动程序
String dbdriver = "sun.jdbc.odbc.JdbcOdbcDriver";


//定义数据库连接地址,jdbc:odbc是固定的,mldn是数据源名称
String dbURL = "jdbc:odbc:mldn";


//定义数据库连接对象,属于java。sql包中的借口,
Connnection conn = null;


//定义Statement对象,用于操作数据库。
Statement stmt = null;


//定义一字符串变量,用于保存sql语句。
String selectsql = null;


//第一一个结果集,用于保存查询结果。
ResultSet rs = null;




%>
<%


//1.加载驱动程序
  try
  {
 Class.forName(dbdriver);
  }
  catch(Exception e)
  {
   out.println("加载驱动程序失败!!")
  //此处向客户端打印失败信息,调用out类,开发中不这样使用,以免出现安全问题
  }




//2.连接数据库
  try
  {
      conn = DriverManager.getConnection(name,password,dbURL);
 //使用DriverManager对接口Connection进行实例化
  }
  catch(Exception e)
  {
 out.println("数据库连接失败!!")
  }


//3.操作数据库
//通过Connection实例化Statement对象
try
{
      stmt = conn.createStatement();


 //为sql变量赋值
selectsql = "SELECT id,name,password,age FROM person";
 //通过Statement对象操作sql语句
rs = stmt.excuteQuery(selectsql);


%>
      <table border="1" width= "80%">
 <tr>
    <td>ID</td>
<td>姓名</td>
<td>密码</td>
<td>年龄</td>
 </tr>
<%


while(rs.next());
{


//通过ResultSet借口中的getXX()方法,可以分类型进行取值。
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
int age = rs.getInt("age");
        //还可以
//int id = rs.getInt(1);
//String name = rs.getString(2);
//String password = rs.getString(3);
//int age = rs.getInt(4);


%>
      <tr>
    <td><%=id%></td>
<td><%=name%></td>
<td><%=password%></td>
<td><%=age%></td>
 </tr>


    <h1>ID:<%=id%>,姓名:<%=name%>,密码:<%=password%>,年龄:<%=age%></h1>
<%
     }
catch(Exception e)
{
     out.println("操作数据库失败!!")
}
//SQL命令:
//-stmt.executeUpdate(sql);
//用于INSERT ,UPDATE,DELETE
//-stmt.executeQuery(sql);
//用于SELECT,返回ResultSet实例化对象


//4.关闭数据库
//关闭顺序--先关闭结果集ResultSet---再关闭操作Statement----最后关闭连接Connection;
try
{
rs.close();


stmt.close();


conn.close();
}
catch(Exception e)
{
out.println("关闭数据库失败!!")
}
%>








PrepareStatement的使用
//如果使用Statement对象则,插入数据如(“mr”)含有单引号则无法插入到数据表中,出现异常
//等安全问题
//建议使用PrepareStatement
<%
//定义PrepareStatement对象用于操作数据库
PrepareStatement pstmt = null;


//sql语句如果是单纯的查询,则Statement和PrepareStatement一样
insertsql = "INSERT INTO person(id,name,password,age) VALUES(?,?,?,?)"


%>
-------------------------------------------------------------------------------------------------------


<%


JDBC2.0的应用-------适合数据量小的程序,数据量大不要使用
//声明结果集可以上下移动,定位
//直接使用结果集操作,在结果集中插入、删除、更新数据可以直接作用于数据库;
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.excuteQuery(selectsql);
//rs.last() 跳到最后一条;


rs.absolute(2)
//取出全部的结果集到内存中,然后进行定位,如上例:第二条,向后滚动输出;性能开销大,少使用


while(rs.previous())//向前输出
%>




<%
批处理------一系列操作要么都成功,要么直接回滚
try{
conn = DriverManager.getConnection(dbURL);
stmt = conn.createStatement();
conn.stAutoCommit(false);//取消自动提交


stmt.addBatch("insert into person() values()");
stmt.addBatch("insert into person() values()");
stmt.addBatch("insert into person() values()");
stmt.addBatch("insert into person() values()");
stmt.addBatch("insert into person() values()");
stmt.addBatch("insert into person() values()");
stmt.addBatch("insert into person() values()");


}catch(SQLException e){System.err.println("excuteQuery"+e.getMessage());}
     try{
row = stmt.excuteBatch();
//执行批处理语句,批量执行sql语句
    //如果sql没有异常则提交事务,真正的向数据库中输入数据
conn。commit();
        }
catch(BatchUpdateException e)
{
conn.rollback();//如果上诉批处理异常则回滚;
}


%>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值