好学IT学院:IT信息技术分享交流平台
标签:Java  来源:互联网  作者:本站整理  发布时间:2010-01-24  ★★★加入收藏〗〖手机版
详解Java开发的数据库连接编程(JDBC)技术
摘要:本文主要讲述JDBC、JDBC的工作原理,访问数据库的方法、Statement、PreparedStatement、CallableStatement,ResultSet等对象的编程使用…

9.6、更新数据库

前面主要介绍如何实现对数据库的查询操作,但在许多应用中需要实现对数据库的更新,这主要涉及修改、插入和删除等(即SQL语句中的Insert、Update、Delete、Creat、Drap等)。仍然通过创建Statement对象来实现,但不再调用executeQuery()方法,而是使用executeUpdate()方法。

要点F:正确区分Statement类中的executeQuery()、execute()和executeUpdate()方法的用法:(1)

executeQuery() 执行一般的SQL查询语句(即SELECT语句)并返回Resultset对象;(2)execute()可以执行各种SQL查询语句,并可能返回多个结果集(这一般主要发生在执行了返回多个结果集的存储过程时),此时可以采用Resultset类的getResultSet()来获得当前的结果集;(3)executeUpdate()执行对数据库的更新的SQL语句或DDL语句。

9.6.1 对表中的记录进行操作

对一个表中的记录可以进行修改、插入和删除等操作,分别对应SQL的Update、Insert、Delete操作;executeUpdate()方法的输入参数仍然为一个String对象(即所要执行的SQL语句),但输出参数不是ResultSet对象,而是一个整数(它代表操作所影响的记录行数)。

Statement stmt=con.createStatement();
  stmt.executeUpdate("Update bookTable set Title='Java2' where Author='zhang'");
  stmt.executeUpdate("Delete from bookTable where Author='zhang'");
  stmt.executeUpdate("Insert into bookTable(BookID,Author,Title) values(1,'Li Ming','Java2')");  //未给出的列,其值为NULL

程序实例:对数据库中的表进行更新操作并显示操作前后的结果

import java.sql.*;
  public class DBUpdateSetTest
  {
  public static void main(String args[])
  {
  try
  {  
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con=DriverManager.getConnection("jdbc:odbc:studlist");
    Statement stmt=con.createStatement();
    ResultSet rs=stmt.executeQuery("select * from student");
    System.out.println("Result before executeUpdate");
    while(rs.next())
    {
    System.out.println(rs.getString("name"));
     System.out.println(rs.getString("age"));
    }
    stmt.executeUpdate("Update student set name='Yang' where id=0");
    stmt.executeUpdate("Delete from student where id=2");
    stmt.executeUpdate("Insert into student(id,name,age,sex) values(2,'zhang',30,true)");
    rs=stmt.executeQuery("select * from student");
    System.out.println("Result After executeUpdate");
    while(rs.next())
    {
      System.out.println(rs.getString("name"));
      System.out.println(rs.getString("age"));
    }
    rs.close();
    stmt.close();
    con.close();
  }
  catch(Exception e)
  {
    System.out.println(e);
  }  
  }
  }

9.6.2  创建和删除表

创建和删除一个表主要对应于SQL的Create Table和Drop Table语句。这可以通过Statement对象的executeUpdate()方法来完成。

① 创建表

Statement stmt=con.createStatement();
  stmt.executeUpdate("create table TableName(ID integer, Name VARCHAR(20), Age integer)");
  stmt.executeUpdate("Insert into TableName(ID, Name, Age) values(1,'Yang Ming',30)");

② 删除表

Statement stmt=con.createStatement();
  stmt.executeUpdate("Drop Table TableName");

9.6.3  增加和删除表中的列

对一个表的列进行更新操作主要是使用SQL的ALTER Table语句。对列所进行的更新操作会影响到表中的所有的行。

① 增加表中的一列

Statement stmt=con.createStatement();
  stmt.executeUpdate("Alter Table TableName add Column Address VarChar(50)");
  stmt.executeUpdate("Update TableName set Address='Beijing,China' where ID=1");

② 删除表中的一列

Statement stmt=con.createStatement();
  stmt.executeUpdate("Alter Table TableName Drop Column Address");
  stmt.executeQuery("Select * from TableName");

9.6.4  利用PreparedStatement对象实现数据更新

同SQL查询语句一样,对数据更新语句时也可以在PreparedStatement对象上执行。使用PreparedStatement对象,只需传递一次SQL语句,可以多次执行它,并且可以利用数据库的预编译技术,提高执行效率。另外也可以接受参数。

PreparedStatement pstmt=con.prepareStatement("Update TableName set Address='Beijing,China' where ID >1");
  pstmt.executeUpdate();

在Java中使用Oracle blob
  Oracle中的lob(LargeObject)可以存储非常大的数据(可能是4GB),这样就可以通过将文件或其它任何对象序列化成字…
  • 好学触屏公众号虎力全开、杨帆起航!
  • 好学考试H5触屏版开放内测