《济南大学JAVA学习课件Ch10数据库编程》由会员分享,可在线阅读,更多相关《济南大学JAVA学习课件Ch10数据库编程(27页珍藏版)》请在金锄头文库上搜索。
1、1张蕾张蕾数据数据库编程程2n了解了解JDBC及其及其驱动程序的程序的类型型n熟悉基本的熟悉基本的SQL语句句n掌握数据掌握数据库编程技程技术主要内容主要内容3n常用数据库常用数据库1.1.Microsoft AccessMicrosoft Access(* *.mdb.mdb)2.2.Microsoft SQL ServerMicrosoft SQL Server(* *.mdf.mdf)nJDBCJDBCJDBC Java Data Base ConnectionJDBC Java Data Base ConnectionJDBCJDBC提供了一套标准的访问数据库的提供了一套标准的访问数据
2、库的APIAPIJDBCJDBC通过数据源指向各种不同类型的数据库,并与数据库建通过数据源指向各种不同类型的数据库,并与数据库建立起连接,连接后就可以对数据库进行访问立起连接,连接后就可以对数据库进行访问基于基于JDBCJDBC的数据库访问的基本步骤:的数据库访问的基本步骤:连接数据库连接数据库向数据库发送向数据库发送SQLSQL语句、执行并处理结果语句、执行并处理结果关闭连接关闭连接概述概述Java程序程序JDBC驱动程序程序数据数据库4JDBCnJDBC1.JDBC Java Data Base Connection2.JDBC的体系结构的体系结构ApplicationApplicatio
3、nApplicationApplicationApplicationApplicationJDBC APIJDBC APIJDBC Driver ManagerJDBC Driver ManagerJDBC DriversJDBC DriversDBDBDBDBDBDB5n基于基于JDBCJDBC的数据库访问的基本步骤:的数据库访问的基本步骤:建立数据库(设置数据源)建立数据库(设置数据源)加载加载JDBCJDBC驱动程序驱动程序获得到数据库的连接获得到数据库的连接创建执行创建执行SQLSQL语句的声明语句的声明向数据库发送并执行向数据库发送并执行SQLSQL语句语句处理执行的结果处理执行的结
4、果关闭连接关闭连接JDBC6n一般一般查询 SELECT *|SELECT *|列名表列名表 FROM FROM 表表, WHERE , WHERE 条件条件 SELECT * FROM SCORE WHERE C180SELECT * FROM SCORE WHERE C180n排序排序查询 在在SELECTSELECT语句中使用句中使用ORDER BYORDER BY子句,如:子句,如: SELECT * FROM stu ORDER BY SELECT * FROM stu ORDER BY 成成绩n模糊模糊查询 在在SELECTSELECT语句的语句的WHEREWHERE子句中,使用子
5、句中,使用LIKELIKE操作符,操作符,% %代替若代替若干个字符,干个字符,_ _代替一个字符,如:代替一个字符,如: SELECT * FROM stu WHERE SELECT * FROM stu WHERE 姓名姓名 LIKE LIKE 张张% %SQLSQL查询语句句7n修改修改 UPDATE UPDATE 表名表名 SET SET 列名列名= =表达式表达式 ,列名,列名= =表达式,表达式, WHERE WHERE 条件表达式条件表达式 UPDATE stu SET UPDATE stu SET 年龄年龄=20 WHERE =20 WHERE 姓名姓名= =张三张三 UPDA
6、TE stu SET UPDATE stu SET 成绩成绩= =成绩成绩+5 WHERE +5 WHERE 年龄年龄2020 UPDATE stu SET UPDATE stu SET 性别性别= =男男,年龄,年龄=21=21SQLSQL更新更新语句句8n插入插入INSERT INTO INSERT INTO 表名表名(列名表列名表) VALUES() VALUES(记录值记录值) ) ,VALUESVALUES( (记录值记录值) INSERT INTO stu VALUES( INSERT INTO stu VALUES(19900061990006, ,王二王二, ,男男,20,85
7、),20,85) INSERT INTO stu( INSERT INTO stu(学号,姓名,成绩学号,姓名,成绩) ) VALUES( VALUES(20000012000001, ,李洪李洪,50),50), VALUES( VALUES(20010012001001, ,赵松赵松,77),77)SQLSQL更新更新语句句9n删除删除 DELETE FROM DELETE FROM 表名表名 WHERE WHERE 条件表达式条件表达式 DELETE FROM stu DELETE FROM stu / /注意:这将删除表注意:这将删除表stustu中的所有记录中的所有记录 DELETE
8、 FROM stu WHERE DELETE FROM stu WHERE 成绩成绩6060SQLSQL更新更新语句句10 JDBC API 常用常用类和接口和接口 nimport java.sql.*;/import java.sql.*;/导入的包入的包n异常异常类q DriverManager类() 装装载驱动程序,管理程序,管理应用程序与用程序与驱动程序之程序之间的的连接。接。q Connection() 将将应用程序用程序连接到特定的数据接到特定的数据库q Statement() 在一个在一个给定的定的连接中,用于接中,用于执行一个静行一个静态的数据的数据库SQL语句。句。q Res
9、ultSet() SQL语句句执行完后,返回的数据行完后,返回的数据结果集(包括行、列)果集(包括行、列)11n以访问以访问 Microsoft Access Microsoft Access 数据库为例进行讲解,数据库为例进行讲解,对其他类型数据库的访问类似。主要区别在于连接对其他类型数据库的访问类似。主要区别在于连接数据库的方法。数据库的方法。数据数据库的的访问12n创建数据库并设置数据源创建数据库并设置数据源1.1.设计满足系统需求的数据库和相关表设计满足系统需求的数据库和相关表2.2.完成基本数据的录入,完成数据库的建立完成基本数据的录入,完成数据库的建立3.3.设置数据源设置数据源(
10、Windows XP(Windows XP下下) )1.1.控制面板控制面板管理工具管理工具数据源数据源(ODBC)(ODBC)2.2.用户用户DSNDSN标签标签添加添加选择驱动程序选择驱动程序完成完成3.3.输入数据源名输入数据源名选择数据库选择数据库确定确定/在此可使用高级按钮设置登录用户和密码在此可使用高级按钮设置登录用户和密码数据数据库的的访问13n加载驱动程序类加载驱动程序类Class.forName(Class.forName(“驱动程序类名驱动程序类名”););Class.forName(“sun.jdbc.odbc. JdbcOdbcDriver”);/jdk已提供已提供Cl
11、ass.forName(“oracle.jdbc.driver.OracleDriver”);Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);数据数据库的的访问14n获得一个到数据库的连接获得一个到数据库的连接1.1.JDBC URLJDBC URL格式:格式:jdbc:jdbc:例如例如String urlstr = String urlstr = “ “jdbc:odbc:mydbjdbc:odbc:mydb” ”; ;String urlstr = String urlstr = “ “jdbc:odbc:Drive
12、r=Microsoft Access jdbc:odbc:Driver=Microsoft Access Driver(*.mdb);DBQ=path/mydb.mdbDriver(*.mdb);DBQ=path/mydb.mdb” ”; ;2.2.获得连接获得连接ConnectionConnection conn; conn;conn = conn = DriverManagerDriverManager.getConnection(urlstr);.getConnection(urlstr);conn = conn = DriverManagerDriverManager.getConne
13、ction.getConnection(urlstr, user, pwd);(urlstr, user, pwd);数据数据库的的访问15n创建一个使用创建一个使用SQLSQL语句的对象语句的对象Statement Statement stmtstmt; ;stmt = conn.createStatement();stmt = conn.createStatement();stmt = conn.createStatement(int,int);stmt = conn.createStatement(int,int);n执行执行SQLSQL语句并获得结果语句并获得结果ResultSetRe
14、sultSet rset; rset;1.1.查询语句(查询语句(SELECTSELECT)2.2.rset = stmt.executeQuery(SQLrset = stmt.executeQuery(SQL语句语句););2.2.更新语句(更新语句(INSERTINSERT、UPDATEUPDATE、DELETEDELETE)int ret = stmt.executeUpdate(SQLint ret = stmt.executeUpdate(SQL语句语句);); 数据数据库的的访问16n处理结果处理结果1.1.说明说明ResultSet对象维护一个指向当前行的位置光对象维护一个指向
15、当前行的位置光标,初始在第标,初始在第1行前面,行前面,next()方法可下移,方法可下移,当没有多余行时返回当没有多余行时返回falseResultSet提供了一组提供了一组get方法用于获取当前行方法用于获取当前行中各列值,按照中各列值,按照left-to-right顺序读取,且每顺序读取,且每列只能读取一次。列号从列只能读取一次。列号从1开始开始数据数据库的的访问172.2.ResultSetResultSet接口提供以下操作结果集数据的方法接口提供以下操作结果集数据的方法光标位置光标位置boolean next(); boolean previous();boolean first()
16、; boolean last();void beforeFirst(); void afterLast();boolean absolute(int); boolean relative(int);boolean isBeforeFirst(); boolean isAfterLast();boolean isFirst(); boolean isLast();数据数据库的的访问18操作列数据操作列数据boolean getBoolean(int/String)byte getByte(int/String)short getShort(int/String)int getInt(int/St
17、ring)long getLong(int/String)float getFloat(int/String)double getDouble(int/String)String getString(int/String)Time getTime(int/String)Date getDate(int/String)Object getObject(int/String)int findColumn(StringcolumnName)数据数据库的的访问19数据数据库的的访问步步骤20n关闭连接关闭连接 rset.close();rset.close(); stmt.close(); stmt.
18、close(); conn.close(); conn.close();数据数据库的的访问21问题描述(问题描述(ExampleCh10_Word.javaExampleCh10_Word.java)1.1.设已存在一个设已存在一个AccessAccess数据库数据库words.mdbwords.mdb,其中有,其中有一个表一个表wordswords,表结构如下:,表结构如下:2.2.设计一个数据库程序,完成英汉查询的功能。即设计一个数据库程序,完成英汉查询的功能。即输入一个英文单词,显示出查询结果输入一个英文单词,显示出查询结果示例示例22主要主要问题JDBC的含的含义与作用是什么?与作用是
19、什么?数据数据库编程一般需要程一般需要导入什么包和入什么包和处理什么异常?理什么异常?如何如何设置置ODBC的的DSN?如何加如何加载数据数据库驱动程序?程序?如何如何获得到一个数据得到一个数据库的的连接(接(Connection)?)?如何如何获得一个使用得一个使用SQL语句的句的对象(象(Statement)?)?如何如何执行行SQL语句?句?如何如何处理理处理理结果(果(ResultSet)?)?如何关如何关闭连接?接?会使用基本的会使用基本的SQL语句。句。23SQL99的主要数据类型的主要数据类型1.Java类型类型1.SQL类类型型1.Java类型类型1.SQL类型类型1.bool
20、ean1.BOOLEAN1.String1.CHAR/VARCHAR1.byte1.TINYINT1.byte1.BINARY/VARBINARY1.char1.Object1.JAVA_OBJECT1.short1.SMALLINT1.Struct1.STRUCT1.int1.INTEGER1.Ref1.REF1.long1.BIGINT1.Clob1.CLOB1.float1.REAL1.Blob1.BLOB1.double1.DOUBLE1.URL1.DATALINK1.Time1.TIME1.Array1.ARRAY1.Date1.DATE1.BigDecimal1.NUMERIC1.
21、Timestamp1.TIMESTAMP24连接连接SQL ServerSQL Server数据库的数据库的JDBCJDBCString JDBCDriver = String JDBCDriver = com.microsoft.jdbc.sqlserver.SQLServerDriver;com.microsoft.jdbc.sqlserver.SQLServerDriver;/ / 声明声明JDBCJDBC驱动程序类型驱动程序类型String url = String url = “jdbc:microsoft.sqlserver:/localhost:1433“jdbc:microso
22、ft.sqlserver:/localhost:1433;DatabaseName=dbname; Password=sa”; ;DatabaseName=dbname; Password=sa”; / / 定义定义JDBCJDBC的的URLURL对象对象Class.forName(JDBCDriver);Class.forName(JDBCDriver);Connection con = DriverManager.getConnection(conURL);Connection con = DriverManager.getConnection(conURL);25补充:充:Jar文档文档
23、一、一、Jar文档的概念文档的概念1.1.jarjar文件是一种将相关文件文件是一种将相关文件组织在一起,并且在一起,并且进行了行了压缩的文件格式,的文件格式,扩展名展名为.jar.jar2.2.使用使用jarjar文档可以用来文档可以用来发布布应用程序用程序26二、生成二、生成JarJar文档文档1.1.直接使用直接使用JDKJDK提供的提供的 jar.exe jar.exe 命令命令2.2.格式:格式:jar cvf jar cvf 压缩后的文档名后的文档名 被被压缩的文件的文件三、解三、解压JarJar文档文档1.1.格式:格式:jar xvf jar xvf 压缩后的文档名后的文档名2
24、.2.也可使用其它的解也可使用其它的解压软件,如件,如 WinRAR WinRAR 等等Jar文档文档27四、四、执行行JarJar文档文档1.1.设置主置主类在在压缩后的后的jarjar文档中,有一个文档中,有一个META-INFMETA-INF目目录,其中有一个文件其中有一个文件MANIFEST.MFMANIFEST.MF编辑该文件,加入下列一行文本:文件,加入下列一行文本:Main-Class: XXXMain-Class: XXX / XXX / XXX是主是主类名,不名,不带.class.class扩展名展名2.2.执行行java -jar java -jar 压缩后的文档名后的文档名当建立了打开当建立了打开jarjar文档的程序文档的程序链接(使用接(使用javaw.exejavaw.exe)时,双,双击该文件也可以文件也可以执行行Jar文档文档