33.JAVA数据库编程本季知识点:JDBC的分类、JDBC的主要操作类和接口:DriverManager、Connection、Statement、PreparedStatement、ResultSet、如何使用JDBC连接MySQL数据库。本季讲解了JAVA数据库编程的步骤,以及主要的编程接口的使用,在最后又讲解了如何使用JDBC连接mysql数据库的操作步骤步骤。的教程。本季讲解了线程通讯的经典案例,之后又讲解了Object类中对线程的支持,以及面试题目。blog:[零基础学JAVA]JavaSE应用部分-33.Java数据库编程(JDBC)之一09-03-2009更新blog:[零基础学JAVA]JavaSE应用部分-33.Java数据库编程(JDBC)之二09-03-2009更新bbs:[零基础学JAVA]JavaSE应用部分-33.Java数据库编程09-03-2009更新零基础学JAVA]JavaSE应用部分-33.Java数据库编程---1(27页)JDBC:JavaDataBaseConnection本季目标1、JDBC的分类2、JDBC的主要操作类和接口:DriverManager、Connection、Statement、PreparedStatement、ResultSet3、如何使用JDBC连接MySQL数据库的教程。1、什么是JDBC?JDBC是JAVA提供的一个服务,专门用于访问数据库操作,而且注意:JDBC定义的是一个数据库访问的标准,所以里面基本上都是一系列的接口。各个数据库厂商如果要想支持JDBC操作,则肯定要提供一组相关的类,这些类肯定都是提供接口子类实现。2、JDBC的分类·JDBC-ODBC桥连接·JDBC直接连接·JDBC网络连接3、什么是ODBC?ODBC是微软公司定义的一个开放式数据库连接(OpenDataBaseConnection),使用ODBC可以连接各种数据库(前提:必须在windows中安装好驱动才可以)。在SUN的JDK中默认提供了此数据库的驱动程序,所以JDK本身可以直接使用JDBC-ODBC进行访问。访问的过程:JDBC--ODBC--数据库(性能比较低)如果直接使用JDBC访问,访问过程:JDBC--数据库(性能较高)4、主要操作接口·Connection:表示连接数据库的接口·Statement:表示操作数据库的接口(执行SQL语句)|-PreparedStatement:操作SQL语句,但是可以进行预处理操作。·ResultSet:表示查询之后的返回结果5、使用JDBC-ODBC操作Access数据库新建一个access空数据库建立好了一个数据库,数据库的名字为:mydb.mdb在数据库中创建表:建立一张person表,包括以下字段:·id--自动增长·name--姓名·age--年龄因为我们的目的是使用JDBC-ODBC桥连接操作数据库,所以此处必须先配置ODBC数据源:管理工具--数据源(ODBC)配置一个全局的数据源名称在ODBC上设置了一个数据库的别名,此别名testDB代表mydb.mdb。以后在操作的时候就是使用testDB即可。如果要设置access数据源名称,则必须先关闭打开的access文件之后再设置保存并关闭access数据库那么以后直接使用testDB就可以访问数据库了。1、操作数据库的步骤(JDBC)·加载数据库的驱动程序:Class.forName(驱动程序);·通过连接管理器,取得一个数据库的连接:DriverManager.getConnection(连接地址)·通过连接创建数据库的操作对象:Statement·操作数据库--执行SQL语句·关闭数据库操作我们现在使用Eclipse新建一个JDBCProject项目来测试下哈~在JDBC中所有的操作步骤都是一样,但是驱动程序和连接地址是不一样的,ODBC的:·驱动程序:sun.jdbc.odbc.JdbcOdbcDriver·连接地址:jdbc:odbc:ODBC配置的DSN名称(jdbc:odbc:testDB)JDBC中的所有操作的包都是java.sql包中JDBCDemo01:packagecom.redking.jdbc.demo;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;publicclassJDBCDemo01{publicstaticfinalStringDBDRIVER=sun.jdbc.odbc.JdbcOdbcDriver;publicstaticfinalStringDBURL=jdbc:odbc:testDB;publicstaticvoidmain(String[]args){//数据库连接对象Connectionconn=null;//数据库操作对象Statementstmt=null;//1、加载驱动程序try{Class.forName(DBDRIVER);}catch(ClassNotFoundExceptione){e.printStackTrace();}//2、连接数据库//通过连接管理器连接数据库try{conn=DriverManager.getConnection(DBURL);}catch(SQLExceptione){e.printStackTrace();}//3、向数据库中插入一条数据Stringsql=INSERTINTOperson(name,age)VALUES('Michael',20);try{stmt=conn.createStatement();}catch(SQLExceptione){e.printStackTrace();}//4、执行语句try{stmt.executeUpdate(sql);}catch(SQLExceptione){e.printStackTrace();}//5、关闭操作,步骤相反哈~try{stmt.close();conn.close();}catch(SQLExceptione){e.printStackTrace();}}}验证一下,有没问题,没有报错,正常现在看下access中数据有没写入进出哈~现在所插入的数据都是固定死的,那么能不能插入一些灵活的数据呢?例如:有些数据可以直接从键盘上输入。JDBCDemo02:packagecom.redking.jdbc.demo;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;publicclassJDBCDemo02{publicstaticfinalStringDBDRIVER=sun.jdbc.odbc.JdbcOdbcDriver;publicstaticfinalStringDBURL=jdbc:odbc:testDB;publicstaticvoidmain(String[]args){Stringname=null;intage=0;BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));System.out.println(请输入姓名:);try{name=buf.readLine();}catch(IOExceptione1){e1.printStackTrace();}System.out.println(请输入年龄:);try{age=Integer.parseInt(buf.readLine());}catch(NumberFormatExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}catch(IOExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}//数据库连接对象Connectionconn=null;//数据库操作对象Statementstmt=null;//1、加载驱动程序try{Class.forName(DBDRIVER);}catch(ClassNotFoundExceptione){e.printStackTrace();}//2、连接数据库//通过连接管理器连接数据库try{conn=DriverManager.getConnection(DBURL);}catch(SQLExceptione){e.printStackTrace();}//3、向数据库中插入一条数据Stringsql=INSERTINTOperson(name,age)VALUES('+name+',+age+);System.out.println(sql);try{stmt=conn.createStatement();}catch(SQLExceptione){e.printStackTrace();}//4、执行语句try{stmt.executeUpdate(sql);}catch(SQLExceptione){e.printStackTrace();}//5、关闭操作,步骤相反哈~try{stmt.close();conn.close();}catch(SQLExceptione){e.printStackTrace();}}}看下效果:已经写入数据库了哈~那能不能修改一条数据呢?JDBCDemo03:packagecom.redking.jdbc.demo;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;publicclassJDBCDemo03{publicstaticfinalStringDBDRIVER=sun.jdbc.odbc.JdbcOdbcDriver;publicstaticfinalStringDBURL=jdbc:odbc:testDB;publicstaticvoidmain(String[]args){//数据库连接对象Connectionconn=null;//数据库操作对象Statementstmt=null;//1、加载驱动程序try{Class.forName(DBDRIVER);}catch(ClassNotFoundExceptione){e.printStackTrace();}//2、连接数据库//通过连接管理器连接数据库try{conn=DriverManager.getConnection(DBURL);}catch(SQLExceptione){e.printStackTrace();}//3、向数据库中插入一条数据Stringsql=UPDATEpersonSETname='51cto',age=25WHEREid=4;try{stmt=conn.createStatement();}catch(SQLExceptione){e.printStackTrace();}//4、执行语句try{stmt.executeUpdate(sql);}catch(SQLExceptione){e.printStackTrace();}//5、关闭操作,步骤相反哈