1. 首页
  2. 文档大全

第六章JSP中使用数据库

上传者:7****0 2022-05-29 13:43:42上传 PPT文件 1.47MB
第六章JSP中使用数据库_第1页 第六章JSP中使用数据库_第2页 第六章JSP中使用数据库_第3页

《第六章JSP中使用数据库》由会员分享,可在线阅读,更多相关《第六章JSP中使用数据库(60页珍藏版)》请在文档大全上搜索。

1、2 23 选择要上传的文件:选择要上传的文件: 4 5in=request.getInputStream();o=new FileOutputStream(f);while(n=in.read(b)!=-1) o.write(b,0,n);67SmartUpload su = new SmartUpload(); su.initialize(pageContext); su.setMaxFileSize(10000); su.setTotalMaxFileSize(20000); su.setAllowedFilesList(doc,txt);su.setDeniedFilesList(exe

2、,bat);su.upload();int count = su.save(/upload);新建一个新建一个SmartUpload对象对象上传初始化上传初始化限制每个上传文件的最大长度。限制每个上传文件的最大长度。限制总上传数据的长度。限制总上传数据的长度。设定允许上传的文件。设定允许上传的文件。设定禁止上传的文件。设定禁止上传的文件。上传文件上传文件将上传文件全部保存到指定目录将上传文件全部保存到指定目录8请选择上传的图片请选择上传的图片 9 uploadimage.jsp10pageContextSmartUpload mySmartUpload =new SmartUpload();m

3、ySmartUpload.initialize(pageContext);mySmartUpload.upload();com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);String myFileName=myFile.getFileName(); ext= myFile.getFileExt(); /取得后缀名取得后缀名int file_size=myFile.getSize(); /取得文件的大小取得文件的大小 String saveurl=application.getRealPath(/)+url

4、+myFileName+.+ext; myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);11 mySmartUpload.setAllowedFilesList(jpg,gif);12 uploadimage.jspalert(只允许上传只允许上传.jpg和和.gif类型图片文件类型图片文件);window.location=upload.jsp;alert(请先选择要上传的文件请先选择要上传的文件);window.location=upload.jsp;%elseString myFileName=myFile.getFileName(); e

5、xt= myFile.getFileExt(); /取得后缀名取得后缀名int file_size=myFile.getSize(); /取得文件的大小取得文件的大小 String saveurl=;if(file_sizefile_size_max)Calendar calendar = Calendar.getInstance();String filename = String.valueOf(calendar.getTimeInMillis(); saveurl=application.getRealPath(/)+url;saveurl+=filename+.+ext; /保存路径保

6、存路径myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);out.print(saveurl);String ret = alert(上传成功!上传成功!); window.location=upload.jsp;out.print( + ret + );catch (Exception e) out.print(e.toString(); %14151517 主要内容主要内容 JDBC 连接数据库的常用方式连接数据库的常用方式 查询记录查询记录 更新记录更新记录 添加记录添加记录 删除记录删除记录 用结果集更新数据库用结果集更新数据库 预处理预处

7、理 事务事务 常见数据库连接常见数据库连接 查询查询Excel电子表格电子表格 难点难点 用结果集更新数据库用结果集更新数据库 预处理预处理 事务事务 关键实践关键实践 查询记录查询记录 更新记录更新记录 删除记录删除记录18 本章将学习在本章将学习在JSP技术中怎样使用数据库,为了更好的技术中怎样使用数据库,为了更好的体现一个体现一个Web应用将数据的处理和显示相分离,除个别应用将数据的处理和显示相分离,除个别例子为了说明基本知识外,本章大部分例子采用例子为了说明基本知识外,本章大部分例子采用JSP+Tag模式,即模式,即JSP页面调用页面调用Tag文件来完成对数据文件来完成对数据库的操作。

8、库的操作。19 SQLServer 2000数据库管理系统。数据库管理系统。 1 启动启动SQL Server 2000 单击单击“开始开始”“程序程序”“Microsoft SQL Server” “服务器管理器服务器管理器” 2 建立数据库建立数据库 单击单击“开始开始”“所有程序所有程序”“Microsoft SQL Server” “企业管理器企业管理器”,新建立的数据库名称是新建立的数据库名称是“Warehouse” 3 创建表创建表 打开打开“企业管理器企业管理器”,用鼠标单击用鼠标单击“数据库数据库”下的下的Warehouse数据库,数据库,在在Warehouse管理的管理的“表

9、表”的选项上的选项上单击右键,选择单击右键,选择“新建表新建表”,将出现相应的建表界面,我们,将出现相应的建表界面,我们建立的表是建立的表是product,该表的字段(属性)为:,该表的字段(属性)为:number(char),name(char),madeTime(datetime),price(float).其中其中 “number”字段为主键。字段为主键。 2021JDBC(Java DataBase Connectivity)是)是Java运行平运行平台的核心类库中的一部分,提供了访问数据库的台的核心类库中的一部分,提供了访问数据库的API,它由一些它由一些Java类和接口组成。类和接

10、口组成。 JDBC操作不同的数据库仅仅是连接方式上的差异而已,操作不同的数据库仅仅是连接方式上的差异而已,使用使用JDBC的应用程序一旦和数据库建立连接,就可以的应用程序一旦和数据库建立连接,就可以使用使用JDBC提供的提供的API操作数据库操作数据库 .我们经常使用我们经常使用JDBC进行如下操作:进行如下操作: 与一个数据库建立连接。与一个数据库建立连接。 向已连接的数据库发送向已连接的数据库发送SQL语句。语句。 处理处理SQL语句返回的结果。语句返回的结果。221.一种常见方式是使用一种常见方式是使用JDBC-ODBC桥接器桥接器2.另一种是加载另一种是加载Java数据库驱动程序数据库

11、驱动程序 23 使用使用JDBC-ODBC桥接器方式的机制是,应用程序只需桥接器方式的机制是,应用程序只需建立建立JDBC和和ODBC之间的连接,而和数据库的连接由之间的连接,而和数据库的连接由ODBC去完成。去完成。 24 使用使用JDBC-ODBC桥接器访问数据库的步骤桥接器访问数据库的步骤: 建立建立JDBC-ODBC桥接器桥接器 创建创建ODBC数据源数据源 Windows控制面板控制面板_管理工具管理工具_ ODBC数据源数据源 和和ODBC数据源建立连接数据源建立连接 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(Cl

12、assNotFoundException e) out.print(e); Connection con=DriverManager.getConnection(“jdbc:odbc:数据源数据源名字名字”,“登录名登录名”,“密码密码”);2526JDBC(Java 数据库连接)Java 应用程序编程接口Java应用程序数据库数据库 插 入修 改删 除查询 27开 始导入 java.sql包 加载并注册驱动程序创建一个 Connection 对象创建一个 Statement 对象执行语句关闭ResultSet 对象关闭Statement对象关闭连接结 束使用ResultSet对象28/* 2

13、011 * 济南大学 版权所有 */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/*. * version * author */class Jdbctest /* 构造方法 */ protected Jdbctest() 29public static void main(String args) try Class.forName(org.gjt.mm.mysq

14、l.Driver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:mysql:/localhost:3306/javaee? useUnicode=true&characterEncoding=gbk; String username= liukun; String pwd = liukun; Connection con = DriverManager.getConnection(url,username,pwd); Statement s = con.createStatem

15、ent(); ResultSet rs = s.executeQuery(select * from friends); while (rs.next() rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 加载并注册驱动程序创建一个 Connection 对象创建一个 Statement 对象执行语句使用ResultSet对象关闭对象和连接30323334开开 始始导入导入 java.sql包包 加载并注册驱动程序加载并注册驱动程序创建创建Connection 对象对象创建创建

16、 Statement 对象对象执行执行SQL语句语句关闭关闭ResultSet 对象对象关闭关闭Statement对象对象关闭关闭Connection对象对象使用使用ResultSet对象对象建立数据源(建立数据源(ODBC) 附加相应产商提供的驱动附加相应产商提供的驱动 结结 束束JDBC-ODBC桥方式桥方式纯纯Java驱动方式驱动方式35363738 对一个数据库中表进行查询操作的具体步骤:对一个数据库中表进行查询操作的具体步骤: 创建创建SQL语句对象语句对象:Statement对象对象 处理查询结果处理查询结果 sql对象可以调用相应的方法实现对数据库中表的查询和修改,并对象可以调用

17、相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个将查询结果存放在一个ResultSet类声明的对象中。类声明的对象中。 ResultSet对象使用对象使用next()方法一次看到一个数据行,用方法一次看到一个数据行,用getXxx (索引或字段名索引或字段名)方法获取字段值。方法获取字段值。 try Class.forName(org.gjt.mm.mysql.Driver); String url = jdbc:mysql:/localhost:3306/javaee; String username= liukun; String pwd = liukun; Connecti

18、on conn = DriverManager.getConnection(url,username,pwd); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(SELECT * FROM 表名表名); catch(Exception e ) System.out.println(e); 方方 法法使使 用用 说说 明明beforeFirst()移动到结果集的开始位置(第一条记录前)移动到结果集的开始位置(第一条记录前)first()移动到第一条记录移动到第一条记录previous()上移一条记录上移一

19、条记录next()下移一条记录下移一条记录last()移动到最后一条记录移动到最后一条记录afterLast()移动到结果集的结束位置(最后一条记录后)移动到结果集的结束位置(最后一条记录后)absolute(int row)移动到移动到row指定的记录,绝对定位指定的记录,绝对定位relative(int row)从当前记录开始,上移或下移从当前记录开始,上移或下移row条记录条记录isBeforeFirst()判断是否是结果集的开始位置判断是否是结果集的开始位置isFirst()判断是否是结果集的第一条记录判断是否是结果集的第一条记录isLast()判断是否是结果集的最后一条记录判断是否是

20、结果集的最后一条记录IsAfterLast()判断是否是结果集的结束位置判断是否是结果集的结束位置3940getByte(columnName):取得当前行中列名为取得当前行中列名为columnName的的字节类型字节类型值值getShort(columnName):取得当前行中列名为取得当前行中列名为columnName的的短整类型短整类型值值getInt(columnName) :取得当前行中列名为取得当前行中列名为columnName的的整型类型整型类型值值getLong(columnName) :取得当前行中列名为取得当前行中列名为columnName的的长整类型长整类型值值getFl

21、oat(columnName) :取得当前行中列名为取得当前行中列名为columnName的的单精实数类型单精实数类型值值getDouble(columnName) : 取得当前行中列名为取得当前行中列名为columnName的的双精类型双精类型值值getBoolean(columnName) : 取得当前行中列名为取得当前行中列名为columnName的的布尔类型布尔类型值值getString (columnName) :取得当前行中列名为取得当前行中列名为columnName的的字符串类型字符串类型值值getDate(columnName) : 取得当前行中列名为取得当前行中列名为colu

22、mnName的的日期类型日期类型值值getTime(columnName) :取得当前行中列名为取得当前行中列名为columnName的的时间类型时间类型值值 41 顺序查询顺序查询 通过通过conn.getMetaData()获取字段信息获取字段信息 通过通过rs.getString(index)获取每条记录相应字段的内容获取每条记录相应字段的内容 随机查询随机查询 为了在结果集中可以前后移动,随机显示若干记录,必须要返为了在结果集中可以前后移动,随机显示若干记录,必须要返回一个可滚动的结果集。回一个可滚动的结果集。 条件查询条件查询 where = 排序查询排序查询 order by 模糊

23、查询模糊查询 where like %Statement stmt=con. createStatement(int type,int concurrency);ResultSet rs=stmt. executeQuery(SQL语句语句);42 可以使用可以使用SQL语句更新记录中字段的值。语句更新记录中字段的值。 Statement对象调用方法:对象调用方法:public int executeUpdate(String sqlStatement); 通过参数通过参数sqlStatement指定的方式实现对数据库表中记录指定的方式实现对数据库表中记录的字段值更新。的字段值更新。 例如:例

24、如:executeUpdate(UPDATE user SET price = 6866 WHERE name=海尔电视机海尔电视机);43 可以使用可以使用SQL语句添加新的记录。语句添加新的记录。 Statement对象调用方法:对象调用方法:public int executeUpdate(String sqlStatement); 通过参数通过参数sqlStatement指定的方式实现向数据库表中添加指定的方式实现向数据库表中添加新的记录。新的记录。 例如:例如: executeUpdate(INSERT INTO user VALUES (100, test, test);44 可以

25、使用可以使用SQL语句删除记录。语句删除记录。 Statement对象调用方法:对象调用方法:public int executeUpdate(String sqlStatement); 删除数据库表中的记录。删除数据库表中的记录。 例如:例如: executeUpdate(DELETE FROM user WHERE username= test );45 可以使用内存中可以使用内存中ResultSet对象对底层数据库表进行更新对象对底层数据库表进行更新和插入操作。前提是要事先返回结果集。和插入操作。前提是要事先返回结果集。 1、更新记录中的列值、更新记录中的列值 结果集结果集rs的游标移动

26、到第的游标移动到第n行行 rs.absolute(n); 结果集将第结果集将第n行的行的p列的列值更新列的列值更新 updateInt(String columnName, int x) 更新数据库中的表更新数据库中的表 Connnection con= DriverManager.getConnection(,);Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs=sql.executeQuery(SELECT * FROM pr

27、oduct);rs.absolute(3); rs.updateString(username, java);rs.updateRow();46 可以使用内存中可以使用内存中ResultSet对象对底层数据库表进行更新对象对底层数据库表进行更新和插入操作。前提是要事先返回结果集。和插入操作。前提是要事先返回结果集。 2、插入记录、插入记录 结果集结果集rs的游标移动到插入行的游标移动到插入行 rs.moveToInsertRow(); 更新插入行的列值更新插入行的列值updateXXX()() rs.updateString(2, test); 插入记录插入记录 insertRow() rs.

28、insertRow();Connnection con= DriverManager.getConnection(,);Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs=sql.executeQuery(SELECT * FROM product);47 预处理语句优点预处理语句优点 对于对于JDBC,如果使用,如果使用Connection和某个数据库建立了连接和某个数据库建立了连接对象对象con,那么,那么con就可以调用方法对

29、参数就可以调用方法对参数sql指定的指定的SQL语语句进行预编译处理,生成该数据库底层的内部命令,并将该句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在命令封装在PreparedStatement对象对象pre中中PreparedStatement pre=con.prepareStatement(String sql); 对象对象pre可以随时地执行下述方法,提高访问数据库的速度。可以随时地执行下述方法,提高访问数据库的速度。 ResultSet executeQuery()boolean execute()int executeUpdate() 48 2、使用统配符、使用统配

30、符 在对在对SQL进行预处理时可以使用统配符进行预处理时可以使用统配符“?”来代替字段的值,来代替字段的值,只要在预处理语句执行之前再设置统配符所表示的具体值即可。只要在预处理语句执行之前再设置统配符所表示的具体值即可。 例如:例如: 等同于:等同于:pre=con.prepareStatement(SELECT * FROM user WHERE username=liukun ); pre=con.prepareStatement(SELECT * FROM user WHERE username= ? );pre.setString(1,liukun);49 事务由一组事务由一组SQL语

31、句组成,所谓语句组成,所谓“事务处理事务处理”是指:应用程序保证是指:应用程序保证事务中的事务中的SQL语句要么全部都执行,要么一个都不执行。语句要么全部都执行,要么一个都不执行。 事务是保证数据库中数据完整性与一致性的重要机制。事务是保证数据库中数据完整性与一致性的重要机制。JDBC事务事务处理步骤如下:处理步骤如下: 1. setAutoCommit(boolean autoCommit)方法方法 为了能进行事务处理,必须关闭连接对象为了能进行事务处理,必须关闭连接对象 con的默认设置。的默认设置。 con.setAutoCommit(false); 2. commit()方法方法 连接

32、对象连接对象 con调用调用commit()方法就是让事务中的方法就是让事务中的SQL语句全部生效。语句全部生效。 mit(); 3. rollback()方法方法 连接对象连接对象 con调用调用rollback()方法,撤消事务中成功执行过的方法,撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据发生变化的发生变化的SQL语句操作,将数据库中的数据恢复到语句操作,将数据库中的数据恢复到commi()方法方法执行之前的状态。执行之前的状态。 con. rollback();5051 安装安装Orac

33、le后,找到目录后,找到目录Oracle/ora81/jdbc中的中的classes.jar(classes12.jar),即用,即用java编写编写Oracle数据库驱动程序。数据库驱动程序。5253 Access也是比较流行的一种数据库管理系统,操作简单、使用方也是比较流行的一种数据库管理系统,操作简单、使用方便。一些规模不大的便。一些规模不大的Web应用经常使用应用经常使用Access数据库数据库管理数据库数据库管理系统。系统。 1.建立建立JDBC-ODBC桥接器桥接器 2.创建创建ODBC数据源时选择的数据库驱动程序为:数据源时选择的数据库驱动程序为: Microsoft Acces

34、s Driver(*.mdb) 3.和和ODBC数据源建立连接数据源建立连接Connection con=DriverManager.getConnection(jdbc:odbc: 数据源名数据源名字字, 登录名登录名, 密码密码);try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) out.print(e); 54 通过通过JDBC-ODBC桥接器访问桥接器访问Excel电子表格,步骤:电子表格,步骤: 1设置数据源设置数据源 为数据源选择的驱动程序是为数据源选择的驱动程序是Mic

35、rosoft Excel Driver。 2选择表选择表 必须在电子表格中选出一工作区作为连接时使用的表。必须在电子表格中选出一工作区作为连接时使用的表。 在在Excel电子表格中拖动鼠标选出范围。电子表格中拖动鼠标选出范围。 然后在然后在Excel菜单中选择菜单中选择“插入插入”“名称名称”“定义定义”,给选中的工作区命名(这一工作区的名称将作为连接时使用给选中的工作区命名(这一工作区的名称将作为连接时使用的表名)。的表名)。 55ExcelRead er=new ExcelRead();String filename =c:/temp.xls; /设置读取的文件名设置读取的文件名er.Ex

36、celOpen(filename); /调用调用JXL打开文件打开文件er.SheetOpen(1); /打开打开Excel的第的第1个个sheetfor (int j = 0; j 10; j+) for (int i = 0; i 10; i+) /读取读取Excel 文件的第文件的第i行,第行,第j列的单元格读出内容为列的单元格读出内容为1字符串字符串 System.out.print(er.getSheetContent(i, j) ); er.ExcelClose(); /关闭关闭Excel文件文件56 Excel的写入:的写入: 此类需要此类需要com/ionglobal/exce

37、l 下面的类:下面的类: ExcelWrite ew=new ExcelWrite(); String filename=c:/temp.xls; ew.ExcelCreate(filename); /创建创建Excel文件名文件名 ew.ExcelCreateSheet(Test, 0); /建立第建立第1个个Sheet /在第在第1个个sheet的的1行行1列插入值列插入值value one ew.AddLable(1, 1, value one); ew.AddNumber(1,2,13); ew.ExcelClose(filename, , 0); /关闭并保存关闭并保存Excel57585960


文档来源:https://www.renrendoc.com/paper/212486990.html

文档标签:

下载地址