您好,欢迎访问三七文档
JDBC编程1JDBC编程目标:1.掌握jdbc编程技术;2.使用数据库完成项目应用;目录1.JDBC基础概念..................................................................................................................................22.JDBC驱动:......................................................................................................................................63.JDBCURL:.........................................................................................................................................74.取得连结对象,执行SQL................................................................................................................75.ResultSet:结果集的提取...............................................................................................................76.使用预编译SQL................................................................................................................................97.批处理执行SQL..............................................................................................................................108元数据查询........................................................................................................................................9总结和任务:.....................................................................................................................................12JDBC编程2客户-服务器模式的数据库应用程序分布JDBC基础概念JDK提供了一组API,让我们可以在java程序中连结到网络上的数据库,并执行SQL语句返回执行结果,这组API的应用我们通常称作JDBC技术;相关的API都在包java.sql.*下面。关键要理解的是:JDBC提供了一组统一的API调用提口,以便我们可以连结、并操作库中的数据---我们只是学习了一组新的API的用法而己。JDBC常用在二层,或三层(N层)结构应用程序中,如下图示:二层结构三层结构窗口服务器数据库开发工具客户机数据库应用程序数据库系统(服务器端)数据库管理系统(DBMS)表用户数据库管理员(DBA)ODBC(开放的数据库连接)软件设计人员数据库(客户端)请求发送SQL语句响应返回数据结果集JDBC编程3JDBC分类1.JDBC-ODBC桥接(速度慢)2.使用厂家提供的驱动API(速度快)JDBCAPI的组成和工作原理应用程序可能会面对不同的数据库,为了在应用中提供统一的调用,java.sql.*包中为应用程序提供的不是具体的类,而是数据库操作定义的接;以下是sql包中定义的常用接口:接口定义说明ResultSet代表执行查询sql的结果集对象ResultSetMetaData数据库元数据对象Statement用于执行一条sql语句的声明对象,执行后可以返回ResulSet对象PreparedStatement用于执行预编译sql语句的声明对象,执行后可以返回ResulSet对象CallableStatement用于执行数据库存储过程声明对象,执行后可以返回ResulSet对象Connection一个Connection对象代表程序与数据库的一个连结,用与创建Statement对象。Connection对象,则是由java.sql.DriverManager类的静态方法getConnection(…)得到,一但应用程序中得取一个Connection对象,即应用程序与数据库创建立了连结。随后,我们就可以JDBC驱动程序建立与数据库的连接DriverManager(驱动程序管理器)生成Connection(连接)生成Statement(语句)生成ResultSet(结果集)执行SQL语句数据库返回数据结果集表JBDC驱动程序数据库数据库应用程序AccessDB2SQLServerSybase标准接口专用接口数据库连接ODBC驱动程序DB2专用驱动程序Sybase专用驱动程序SQLServer专用驱动程序JDBC编程4通过操作Connection对象,创建Statement对象以执行sql语句,或从执行结果返回的ResultSet中取得查询结果;这个过程也可以如下图示:简单的示例,从数据库中查询出数据并打印到命令中,然后再来讲解其中的技术要点,我们将把数据库中如下表结构打印到命令行:代码:importjava.sql.Connection;importjava.sql.DriverManager;publicclassConn2Oracle{//程序入口主方法publicstaticvoidmain(String[]args)throwsException{connDB();}/***1.连结到数据库,2.执行一条查询语句3.打印出查询结果JDBC编程5*/privatestaticvoidconnDB(){try{//装载对应数据库的驱动类//此处是oracle专用JDBC驱动Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();//数据库连结串StringdbURL=jdbc:oracle:thin:@localhost:1521:oar9i;//创建连结,传入连结串,帐号,密码Connectionconn=DriverManager.getConnection(dbURL,netjava,netjava);//以下是JDBC-ODBC驱动//Class.forName(sun.jdbc.odbc.JdbcOdcDriver).newInstance();//数据库连结串//StringdbURL=jdbc:odbc:netjavabbs;//创建连结,传入连结串,帐号,密码//Connectionconn=DriverManager.getConnection(dbURL);//mySQL驱动//Stringuser=root;//Stringpassword=mysql;//Class.forName(com.mysql.jdbc.Driver).newInstance();//数据库连结串//StringdbURL=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk;//创建连结,传入连结串,帐号,密码//Connectionconn=DriverManager.getConnection(dbURL,user,password);Stringsql=selectid,userid,contentfrompost;java.sql.Statementstmt=conn.createStatement();//执行sql,得到结果集java.sql.ResultSetrs=stmt.executeQuery(sql);System.out.println(IDUSERID内容);//遍历结果集中第一行,打印出数据while(rs.next()){//取出每行中每一列intid=rs.getInt(1);intuserID=rs.getInt(2);Stringcontent=rs.getString(3);System.out.println(id+|+userID+|+content);}}catch(Exceptione){System.out.println(数据库连接失败!+e);e.printStackTrace();}}}JDBC编程6EC控制台输出结果如下:注意,如上程序要执行成功,除了数据库相关参数正确外,还必须将oracle_Homeora92\jdbc\lib\classes12.jar包加入到项目类库中---这个类库者是实际的Oracle数据库的JDBC实现,如果没加入这个类库,可能会报“找不到驱动”错误信息:如果是mysqlDB,驱动名应写成(驱动jar包要从上下载):com.mysql.jdbc.Driver数据库连结串的格式就应是:jdbc:mysql://localhost:3306/netjavabbs接下来,我们详细讲解其中每个步骤。2.JDBC驱动:在创建Connection对象前,必须使用Class.forName(“驱动类名”).newInstance()方法在JVM中生成指定数据库驱动对象。如上例中语句,就是将我们加入的Oracle驱动包中的类oracle.jdbc.driver.OracleDriver装载进JVM。//装载对应数据库的驱动类Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();Class.forName(ClassName)返回的是一个Class对象,调用Class对象的newInstance()方法将使用这个Class对象创建类的具体对象,---相当于newClassName()调用。因此上句代码也可以替换为:oracle.jdbc.driver.OracleDriverod=neworacle.jdbc.driver.OracleDriver();但写成Class.forName…方式,应用程序会获得较大的灵活性:通过一个字符串,在运行时再确定装载的具体对象,这就是java语言动态性的体现,后面我们将会深入的讲解这一点。JDBC编程7注意,由于我们连结的是Oracle数据库,所以此处装载的是Oracle驱动包中的类,即classes12.jar中的oracle.jdbc.driver.OracleDriver.class。对于某一种数据库,这个驱动类一般是固定的,但不同的数据库,则是不一样的;例如mySql中驱动类的名字就是其驱动包中的com.mysql.jdbc.Driver.class类。在连结某一数据库前,必须装载正确的驱动类,并将其类库加入到classpath中,具体数据库的JDBC包及驱动类名,都可在其官方网站下载。3.JDBCURL:连结一个数据库时,必须指定数据库的URL,如本例中://数据库连结串StringdbURL=jdbc:oracle:thin:@localhost:1521:oar9i;数据库URL首先代表的是一种通讯协议,即JDBC协议,一般是以j
本文标题:JDBC编程指导
链接地址:https://www.777doc.com/doc-2881830 .html