1 / 16

JDBC 应用

JDBC 应用. JDBC 开发步骤. 1 )载入 JDBC 驱动程序 com.microsoft.jdbc.sqlserver.SQLServerDriver 2 )创建数据库的连接 jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=GT 3 )创建语句对象 4 )利用语句对象执行 SQL 语句得到结果 5 )处理结果 6 )关闭资源. JDBC 主要接口. java.sql.DriverManager 用于处理驱动程序的调入并且对新的数据库连接提供支持。 java.sql.Connection

roddy
Download Presentation

JDBC 应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JDBC应用

  2. JDBC开发步骤 1)载入JDBC驱动程序 com.microsoft.jdbc.sqlserver.SQLServerDriver 2)创建数据库的连接 jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=GT 3)创建语句对象 4)利用语句对象执行SQL语句得到结果 5)处理结果 6)关闭资源

  3. JDBC 主要接口 java.sql.DriverManager 用于处理驱动程序的调入并且对新的数据库连接提供支持。 java.sql.Connection 指应用程序与特定数据库的连接。 java.sql.Statement 用于一般sql语句的执行(可以是查询、更新甚至可以创建数据库的执行过程) java.sql.ResultSet 查询所返回的结果保存在此对象中,用它可以浏览和存取数据库内的记录。

  4. package org.gt.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DataBaseConnection { private final String DBDRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver" ; private final String DBURL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=GT" ; private final String DBUSER = "sa" ; private final String DBPASSWORD = "sa" ; private Connection conn = null ; public DataBaseConnection() { try { Class.forName(DBDRIVER) ; this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; } catch (Exception e) { e.printStackTrace(); } } public Connection getConnection() { // TODO Auto-generated method stub return this.conn; } public void close() { try { this.conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

  5. SQL语句 1)插入语句 sql = “INSERT INTO person (name,password,age) VALUES (‘jida’,‘123’,28)” ; 2)更新语句 sql = “UPDATE person SET name=‘jim’,password=‘403’ WHERE id=3” ; 3)按ID删除记录 sql =“DELETE FROM person WHERE id=4” ; 4)查询 sql=“SELECT * FORM person”;

  6. 使用JDBC进行增加、修改、删除数据时用--->executeUpdate(sql);使用JDBC进行增加、修改、删除数据时用--->executeUpdate(sql); • 使用JDBC查询用,--->executeQuery(sql); 返回的为ResultSet对象。

  7. 结果集ResultSet的处理 • 使用getXXX()方法可以得到不同类型的结果值(参数可以是字段名或编号) • next()方法可以是游标移动到下一条记录

  8. 使用Statement时需要一个完整的SQL语句,但是如果其中包含“‘”,会造成输入的不正确使用Statement时需要一个完整的SQL语句,但是如果其中包含“‘”,会造成输入的不正确 解决方法:使用--->PreparedStatement

  9. PreparedStatement对象和Statement对象类似, 都可以用来执行SQL语句。不同在于,数据库会对PreparedStatement的SQL语句进行预编译,而且仍旧能输入参数并重复执行编译好的查询速度比未编译的要快。PreparedStatement stmt=con.preparedStatement("Insert Into users(userid, username) values(?,?)");stmt.clearParameters();stmt.setInt(1,2);stmt.setString(2,"Big");stmt.executeUpdate();

  10. sql=“insert into person(name,password,age) values(?,?,?)”; stmt=conn.preparedStatement(sql); stmt.setString(1,”jida”); …. stmt.executeUpdate();

  11. PreparedStatement pstmt = null ; DataBaseConnection1 dbc = null ; String sql=""; try { // 连接数据库 dbc = new DataBaseConnection1() ; pstmt=dbc.getConnection().prepareStatement(sql); … } catch (Exception e) { thrownew Exception("操作出现异常") ; } finally { // 关闭数据库连接 dbc.close() ; }

  12. Statement stmt=con.getStatement("游标类型", "记录更新权限");游标类型:ResultSet.TYPE_FORWORD_ONLY:只可以向前移动ResultSet.TYPE_SCROLL_INSENSITIVE:可卷动。但是不受其他用户对数据库更改的影响。ResultSet.TYPE_SCROLL_SENSITIVE:可卷动。当其他用户更改数据库时这个记录也会改变。记录更新权限:ResultSet.CONCUR_READ_ONLY,只读ResultSet.CONCUR_UPDATABLE,可更新 getStatement()缺省参数:getStatement(ResultSet.TYPE_FORWORD_ONLY, ResultSet.CONCUR_READ_ONLY)

  13. 如果ResultSet是可卷动的,以下函数可以使用:rs.absolute()//绝对位置,负数表示从后面数rs.first()第一条rs.last()最后一条rs.previoust()前一条rs.next()后一条rs.beforeFirst()第一条之前rs.afterLast()最后之后rs.isFirst(),rs.isLast(),rs.isBeforeFirst(),rs.isAfterLast注意,刚打开的时候是处于第一条记录之前的

  14. 批处理 • 可以让一个Statement同时执行多个SQL语句,以提高性能。 • 事务处理 事务:在数据库批处理操作时,要么全部执行成功,要么全部失败。 可以保证数据的完整性

  15. try { stmt = conn.createStatement() ; // 取消自动提交 conn.setAutoCommit(false) ; stmt.addBatch("INSERT INTO person (name,password,age) VALUES (‘jida1','zzzzzz',25)") ; stmt.addBatch("INSERT INTO person (name,password,age) VALUES (‘jida2','zzzzzz',26)") ; stmt.addBatch("INSERT INTO person (name,password,age) VALUES (jida3','zzzzzz',27)") ; stmt.addBatch("INSERT INTO person (name,password,age) VALUES (‘jida4','zzzzzz',28)") ;

  16. // 执行批处理语句 stmt.executeBatch() ; // 如果没有异常,则执行此段代码 // 提交事务,真正向数据库中插入数据 conn.commit() ; } catch(Exception e) { // 将数据库回滚 try { conn.rollback() ; } catch(Exception e1) {} out.println("操作数据库失败!!!") ; }

More Related