您好,欢迎访问三七文档
JDBC讲课流程JDBC授课大纲2第一课JDBC概述和基本数据库操作JDBC(javadatabaseconnectivity)用于在java程序中实现数据库操作的数据库编程接口,支持基本的SQL语句,为应用程序和数据库之间提供了桥梁java程序和数据库之间的关系如下图:JDBC的版本:JDK1.4,1.5对应JDBC3.0JDK1.6对应JDBC4.0介绍java中和操作数据库相关的API,解释这些API都是未实现的,真正实现操作的是数据库厂家提供的类库,例如oracle提供的classes12.jar,sqlserver提供的mssqlserver.jar等。将oracle安装文件下的classes12.jar文件构建到myeclipse开发工具下。开始数据库编程:(别忘先导入包)第一步加载数据库驱动程序Class.forName(oracle.jdbc.driver.OracleDriver);这是利用反射注册一个数据库驱动或者用驱动管理器也可以注册数据库驱动DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());第二步创建数据库连接对象Stringurl=jdbc:oracle:thin:@127.0.0.1:1521:dhc;Stringuser=scott;Stringpwd=tiger;Connectionconn=DriverManager.getConnection(url,user,pwd);其中dhc表示的是数据库名或域名而并非是服务名DriverManager类存有已注册的Driver类的清单。当调用方法getConnection时,它将检查清单中的每个驱动程序,直到找到可与URL中指定的数据库进行连接的驱动程序为止。如果改成用OCI形式连接,url字符串改为类似以下语句:Stringurl=jdbc:oracle:oci8:scott/tiger@dhc;JAVA应用程序JDBCAPIJDBC驱动程序管理器JDBCFORORACLEJDBCFORSQLSERVERJDBCFOROTHERDBORACLESQLSERVEROTHERSDBJDBC授课大纲3或者Stringurl=jdbc:oracle:oci:scott/tiger@dhc;第三步创建SQL语句载体对象Statementstmt=conn.createStatement();第四步执行SQL语句返回结果集对象ResultSetrs=stmt.executeQuery(select*fromemployees);第五步遍历结果集返回数据while(rs.next()){System.out.println(编号:+rs.getInt(1)+\t姓名:+rs.getString(3));}在这一步讲解结果集指针的概念,默认状态下游标只能向下移动需要注意getXXX方法的数据类型要和表中字段的数据类型兼容。讲解getXXX()括号中的参数既可以是列索引,也可以是列名,如果使用列名并且结果集中有多个列的名字是相同的,那么返回第一列的的列值,一般用列索引效率会高一些介绍rs.wasNull方法,当前最后一次getXXX()返回的列值是否为null,需要注意的是如果get方法以数字的形式获取列值且返回的列值为null,得到的结果会自动的转换为0或0.0别忘记在下面介绍java的数据类型和SQL的数据类型之间的映射关系第六步关闭对象释放资源采取逆向关闭对象的顺序rs.close();stmt.close();conn.close();在关闭stmt对象或利用stmt对象重新执行其他SQL语句时时会自动关闭rs对象。解讲数据类型之间的映射关系SQL类型JAVA类型CHARStringREALFloatDATALINKjava.net.URLREFRefSTRUCTStructDISTINCTMappingofunderlyingtypeARRAYArrayBLOBBlobCLOBClobTIMESTAMPjava.sql.TimestampJDBC授课大纲4TIMEjava.sql.TimeDATEjava.sql.DateLONGVARBINARYbyte[]VARBINARYbyte[]BINARYbyte[]DOUBLEdoubleFLOATdoubleVARCHARStringLONGVARCHARString以上操作的完整代码:importjava.sql.*;publicclassJDBC1{publicstaticvoidmain(String[]args)throwsSQLException{//注册数据库驱动程序DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());//创建数据库连接对象Stringurl=jdbc:oracle:thin:@127.0.0.1:1521:dhc;Stringuser=scott;Stringpwd=tiger;Connectionconn=DriverManager.getConnection(url,user,pwd);//创建SQL语句载体对象Statementstmt=conn.createStatement();//返回结果集对象ResultSetrs=stmt.executeQuery(select*fromemployees);//遍历结果集返回数据while(rs.next()){System.out.println(编号:+rs.getInt(1)+\t姓名:+rs.getString(3));}//关闭对象rs.close();stmt.close();conn.close();}}经过优化的代码:importjava.sql.*;publicclassJDBC1{publicstaticvoidmain(String[]args){Connectionconn=null;Statementstmt=null;ResultSetrs=null;JDBC授课大纲5try{//注册数据库驱动程序DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());//创建数据库连接对象Stringurl=jdbc:oracle:thin:@127.0.0.1:1521:dhc;Stringuser=scott;Stringpwd=tiger;conn=DriverManager.getConnection(url,user,pwd);//创建SQL语句载体对象stmt=conn.createStatement();//返回结果集对象rs=stmt.executeQuery(select*fromemployees);//遍历结果集返回数据while(rs.next()){System.out.println(编号:+rs.getInt(1)+\t姓名:+rs.getString(3));}}catch(SQLExceptione){e.printStackTrace();}finally{try{//关闭对象if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(conn!=null)conn.close();}catch(SQLExceptione){e.printStackTrace();}}}}练习:查询departments表中的50~190号部门信息(部门编号,部门名称,部门管理者姓名,部门所在城市)importjava.sql.*;publicclassTest6{publicstaticvoidmain(String[]args){Connectionconn=null;Statementstmt=null;ResultSetrs=null;JDBC授课大纲6try{DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());Stringurl=jdbc:oracle:thin:@localhost:1521:dhc;Stringuser=scott;Stringpwd=tiger;conn=DriverManager.getConnection(url,user,pwd);stmt=conn.createStatement();rs=stmt.executeQuery(selectd.department_id,department_name,last_name,cityfromdepartmentsd,employeese,locationslwhered.manager_id=e.employee_id(+)andd.location_id=l.location_idandd.department_idbetween50and190orderbyd.department_id);while(rs.next()){System.out.println(rs.getInt(1)++rs.getString(2)++rs.getString(3)++rs.getString(4));}}catch(SQLExceptione){e.printStackTrace();}finally{try{if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(conn!=null)conn.close();}catch(Exceptione){e.printStackTrace();}}}}综合练习:查询job_history表中所有数据,将数据写入到文本文件中,一条记录一行,列值之间用|隔开importjava.sql.*;importjava.io.*;publicclassTest7{publicstaticvoidmain(String[]args){JDBC授课大纲7Connectionconn=null;Statementstmt=null;ResultSetrs=null;FileWriterfw=null;BufferedWriterbw=null;try{DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());Stringurl=jdbc:oracle:thin:@localhost:1521:dhc;Stringuser=scott;Stringpwd=tiger;conn=DriverManager.getConnection(url,user,pwd);stmt=conn.createStatement();rs=stmt.executeQuery(select*fromjob_history);fw=newFileWriter(e:\\job_history.txt);bw=newBufferedWriter(fw);while(rs.next()){bw.write(rs.getInt(1)+|+rs.getString(2)+|+rs.getString(3)+|+rs.getString(4)+|+rs.getInt(5));bw.newLine();}}catch(SQLExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}finally{try{if(bw!=null)bw.close();if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(conn!=null)conn.close();}catch(Exceptione
本文标题:JDBC讲课流程
链接地址:https://www.777doc.com/doc-637351 .html