一、关系数据库概述关系数据库:数据以行、列的表格形式存储、通常一个数据库由一组表构成,表中的数据项以及表之间的链接通过关系来组织和约束。2常用小型数据库:MicrosoftAccess、MySql等。2常用大型数据库:IBMDB2、MicrosoftSQLServer、Oracle、Sybase等。表11-1常用SQL命令的使用举例命令功能举例Create创建表格createtablecoffees(cof_namevarchar(32),priceinteger)Drop删除表格droptabecoffeesInsert插入数据insertintocoffeesvalues(‘Colombian’,101)Select查询数据selectcof_name,pricefromcoffeeswhereprice7Delete删除数据delete*fromcoffeeswherecof_name=’Colombian’Update修改数据updatecoffeessetprice=price+1二、JDBCJDBC:JavaDataBaseConnectivity。(1)JDBC驱动程序2JDBC-ODBC桥接器驱动程序2本地API结合部分java驱动程序2JDBC-Net纯java驱动程序2本地协议纯java驱动程序(2)ODBC数据源配置ODBC数据源的配置过程:①“控制面板”-“管理工具”-“数据源(ODBC)”。②选择“系统DNS选项卡”。③单击“添加”按钮,选择数据库驱动程序。本教材选择“MicrosoftAccessDriver(*.mdb)”。④出现“ODBCMicrosoftAccessDriver安装”对话框,在“数据源名”文本框中输入数据源名称。⑤单击数据库的“选择”按钮,选择数据库。(3)JDBCAPIjava.sql包提供了多种JDBCAPI:2Connection接口:代表与数据库的连接。2Statement接口:用来执行SQL语句并返回结果记录集。2ResultSet:SQL语句执行后的结果记录集。必须逐行访问数据行①使用JDBC连接数据库调用DriverManager.getConnection()方法与数据库建立连接;例题:11-1通过ODBC数据源与Access数据库的连接。importjava.sql.*;publicclassConnectDataBase{publicstaticvoidmain(String[]args){Stringurl=jdbcdbc:mydata;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){System.out.println(e.getMessage());}try{Connectioncon=DriverManager.getConnection(url,,null);System.out.println(ConnectionSucceed!);con.close();}catch(SQLExceptionex){System.out.println(Message:+ex.getMessage());}}}②创建Statement对象使用Connection类的createStatement()方法创建:Statementstmt=con.createStatement();使用stmt对象调用executeQuery()方法执行SQL语句:ResultSetrs=stmt.executeQuery(“selecta,b,cfromtableName”);例题:11-2在一个空库中创建数据表importjava.sql.*;publicclassCreateStudent{publicstaticvoidmain(String[]args){Stringurl=jdbcdbc:mydata;Stringsql=createtablestudent(namevarchar(20),sexchar(2),birthdayDate,leavebit,stnumberinteger);try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){System.out.println(e.getMessage());}try{Connectioncon=DriverManager.getConnection(url,,null);Statementstmt=con.createStatement();try{stmt.executeUpdate(sql);System.out.println(studenttablecreated);}catch(Exceptionex){}stmt.close();con.close();}catch(SQLExceptionex){System.out.println(ex.getMessage());}}}三、JDBC基本应用(1)数据库的查询①获取列表信息②遍历访问结果集(定位行)③访问当前行的数据项(具体列)例题:11-3查询学生表信息importjava.sql.*;publicclassQueryStudent{publicstaticvoidmain(String[]args){Stringurl=jdbcdbc:mydata;Stringsql=select*fromstudent;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){System.out.println(e.getMessage());}try{Connectioncon=DriverManager.getConnection(url,,null);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery(sql);while(rs.next()){Strings1=rs.getString(name);Strings2=rs.getString(sex);Dated=rs.getDate(birthday);booleanv=rs.getBoolean(leave);intn=rs.getInt(stnumber);System.out.println(s1+,+s2+,+d+,+v+,+n);}rs.close();stmt.close();con.close();}catch(SQLExceptione){System.out.println(e);}}}④创建滚动结果集例题:11-4游标的移动importjava.sql.*;publicclassMoveCursor{publicstaticvoidmain(String[]args){Stringurl=jdbcdbc:mydata;Stringsql=select*fromstudent;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){System.out.println(e.getMessage());}try{Connectioncon=DriverManager.getConnection(url,,null);Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSetrs=stmt.executeQuery(sql);rs.last();intnum=rs.getRow();System.out.println(共有学生数量=+num);rs.beforeFirst();while(rs.next()){Strings1=rs.getString(name);Strings2=rs.getString(sex);Dated=rs.getDate(birthday);booleanv=rs.getBoolean(leave);intn=rs.getInt(stnumber);System.out.println(s1+,+s2+,+d+,+v+,+n);}rs.close();stmt.close();con.close();}catch(SQLExceptione){System.out.println(e);}}}(2)数据库的更新①数据的插入例题:向空表student中插入数据importjava.sql.*;publicclassInsertData{publicstaticvoidmain(String[]args){Stringurl=jdbcdbc:mydata;Stringsql=insertintostudentvalues('王五','女',DateValue('81/02/13'),false,20010845);try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){System.out.println(e.getMessage());}try{Connectioncon=DriverManager.getConnection(url,,null);Statementstmt=con.createStatement();try{stmt.executeUpdate(sql);System.out.println(InsertDataSuccessed);}catch(Exceptionex){}stmt.close();con.close();}catch(SQLExceptionex){System.out.println(ex.getMessage());}}}②数据的修改和数据的删除sql=updatestudentsetsex='女'wherename='张三';sql=delete*fromstudentwherestnumber=20010846;(3)用PreparedStatement类实现SQL操作例题:11-6采用PreparedStatement实现数据写入。importjava.sql.*;publicclassInsertStudent2{publicstaticvoidmain(String[]args){Stringurl=jdbcdbc:mydata;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){System.out.println(e.getMessage());}try{Connectioncon=DriverManager.getConnection(url,,null);Statementstmt=con.createStatement();Stringsql=insertintostudentvalues(?,?,?,?,?);PreparedStatementps=con.prepareStatement(sql);ps.setString(1,王五);ps.setString(2,男);ps.setDate(3,java.util.Date.valueOf(1982-02-15));ps.setBoolean(4,true);ps.setInt(5,20001);ps.executeUpdate();System.out.prin