为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第六章JSP中使用数据库

2018-05-29 60页 ppt 1MB 14阅读

用户头像 个人认证

拍拍£宝贝

有多年的行政人事工作经验,现负责公司员工招聘,筛选,面试,培训等管理

举报
第六章JSP中使用数据库JSP应用程序设计济南大学信息学院刘鹍liukun@ujn.edu.cn22情境项目:网络交友系统情境一:JSP中的文件操作——上传会员图片。情境二:把信息存储到数据库中——实现会员注册、登录。情境三:数据库的基本操作——浏览和修改会员信息。情境四:使用JavaBean——给JSP“瘦身”。情境五:Servlet能为我们做什么?情境六:使用Servlet——改善我们的架构。情境七:什么...
第六章JSP中使用数据库
JSP应用程序济南大学信息学院刘鹍liukun@ujn.edu.cn22情境项目:网络交友系统情境一:JSP中的文件操作——上传会员图片。情境二:把信息存储到数据库中——实现会员注册、登录。情境三:数据库的基本操作——浏览和修改会员信息。情境四:使用JavaBean——给JSP“瘦身”。情境五:Servlet能为我们做什么?情境六:使用Servlet——改善我们的架构。情境七:什么是MVC模式?情境八:MVC模式与文件操作、数据库操作和注册登录情境九:MVC模式——重构我们的交友系统3情境一:JSP中的文件操作——上传会员图片例子:<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><P>选择要上传的文件:<BR><FORMaction="accept.jsp"method="post"ENCTYPE="multipart/form-data"><INPUTtype=FILEname="boy"size="38"><BR><INPUTtype="submit"name="g"value="提交"></FORM></BODY></HTML>4情境一:JSP中的文件操作——上传会员图片例子:<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.io.*"%><HTML><BODY><%try{InputStreamin=request.getInputStream();Filedir=newFile("C:/1000");dir.mkdir();Filef=newFile(dir,"B.txt");FileOutputStreamo=newFileOutputStream(f);byteb[]=newbyte[1000];intn;while((n=in.read(b))!=-1)o.write(b,0,n);o.close();in.close();out.print("文件已上传");}catch(IOExceptionee){out.print("上传失败"+ee);}%></BODY></HTML>5情境一:JSP中的文件操作——上传会员图片上传步骤:FORMENCTYPE=“multipart/form-data”<inputtype=“FILE”/>requestin=request.getInputStream();byteb[]=newbyte[1000];Filedir=newFile(“c:\”);dir.mkdir();Filedir=newFile(dir,””);o=newFileOutputStream(f);while((n=in.read(b))!=-1)o.write(b,0,n);6情境一:JSP中的文件操作——上传会员图片结果是什么?7扩展:基于jspsmartupload组件的文件上传思路:把jspsmartupload.jar放到WEB-INF的lib文件夹下。调用jspsmartupload组件的接口,实现文件的上传和下载。Jspsmartupload组件的使用:SmartUploadsu=newSmartUpload();su.initialize(pageContext);su.setMaxFileSize(10000);su.setTotalMaxFileSize(20000);su.setAllowedFilesList("doc,txt");su.setDeniedFilesList("exe,bat");su.upload();intcount=su.save("/upload");新建一个SmartUpload对象上传初始化限制每个上传文件的最大长度。限制总上传数据的长度。设定允许上传的文件。设定禁止上传的文件。上传文件将上传文件全部保存到指定目录8扩展:基于jspsmartupload组件的文件上传upload.jsp<html><head><title>请选择上传的图片</title></head><body><tableborder="0"align="center"cellpadding="0"cellspacing="0"><tr><tdheight="45"align="center"valign="middle"><formaction="uploadimage.jsp"method="post"enctype="multipart/form-data"name="form1"><inputtype="file"name="file"><inputtype="submit"name="Submit"value="上传"></form></td></tr></table></body></html>9扩展:基于jspsmartupload组件的文件上传uploadimage.jsp<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*"%><%SmartUploadmySmartUpload=newSmartUpload();StringfileName2="",ext="",testvar="";Stringurl="upload/";mySmartUpload.initialize(pageContext);mySmartUpload.upload();com.jspsmart.upload.FilemyFile=mySmartUpload.getFiles().getFile(0);StringmyFileName=myFile.getFileName();ext=myFile.getFileExt();//取得后缀名Stringsaveurl=application.getRealPath("/")+url+myFileName+"."+ext;myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);out.print("上传成功!");%>10扩展:基于jspsmartupload组件的文件上传思路:FORMENCTYPE=“multipart/form-data”<inputtype=“FILE”/>requestpageContextSmartUploadmySmartUpload=newSmartUpload();mySmartUpload.initialize(pageContext);mySmartUpload.upload();com.jspsmart.upload.FilemyFile=mySmartUpload.getFiles().getFile(0);StringmyFileName=myFile.getFileName();ext=myFile.getFileExt();//取得后缀名intfile_size=myFile.getSize();//取得文件的大小Stringsaveurl=application.getRealPath("/")+url+myFileName+"."+ext;myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);11扩展:基于jspsmartupload组件的文件上传进一步优化我们的上传限制扩展名mySmartUpload.setAllowedFilesList("jpg,gif");限制文件大小增加错误提示更改文件名(不重复)12扩展:基于jspsmartupload组件的文件上传uploadimage.jsp<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*"%><%SmartUploadmySmartUpload=newSmartUpload();longfile_size_max=4000000;StringfileName2="",ext="",testvar="";Stringurl="upload/";mySmartUpload.initialize(pageContext);try{mySmartUpload.setAllowedFilesList("jpg,gif");mySmartUpload.upload();}catch(Exceptione){%><SCRIPTlanguage=javascript>alert("只允许上传.jpg和.gif类型图片文件");window.location='upload.jsp';</script><%}13扩展:基于jspsmartupload组件的文件上传uploadimage.jsptry{com.jspsmart.upload.FilemyFile=mySmartUpload.getFiles().getFile(0);if(myFile.isMissing()){%><SCRIPTlanguage=javascript>alert("请先选择要上传的文件");window.location='upload.jsp';</script><%}else{StringmyFileName=myFile.getFileName();ext=myFile.getFileExt();//取得后缀名intfile_size=myFile.getSize();//取得文件的大小Stringsaveurl="";if(file_size<file_size_max){Calendarcalendar=Calendar.getInstance();Stringfilename=String.valueOf(calendar.getTimeInMillis());saveurl=application.getRealPath("/")+url;saveurl+=filename+"."+ext;//保存路径myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);out.print(saveurl);Stringret="alert('上传成功!');window.location='upload.jsp';";out.print("<scriptlanguage=javascript>"+ret+"</script>");}}}catch(Exceptione){out.print(e.toString());}%>14实验六:基于jspsmartupload组件的文件上传实验目的:掌握基于jspsmartupload组件的文件上传实验要求:编写一个图片上传的例子:upload.jsp负责提供上传文件的表单,用户通过upload.jsp将要上传的文件提交给accept.jsp,accept.jsp负责上传文件,将文件上传至web服务目录下ch5目录下的image文件夹内。要求限制上传文件的类型必须是jpg或gif,限制文件大小为10k字节以内,如果有错误,通过页面提示用户。1515情境项目:网络交友系统情境一:JSP中的文件操作——上传会员图片。情境二:把信息存储到数据库中——实现会员注册、登录。情境三:数据库的基本操作——浏览和修改会员信息。情境四:使用JavaBean——给JSP“瘦身”。情境五:Servlet能为我们做什么?情境六:使用Servlet——改善我们的架构。情境七:什么是MVC模式?情境八:MVC模式与文件操作、数据库操作和注册登录情境九:MVC模式——重构我们的交友系统JSP中使用数据库17第6章导读主要内容JDBC连接数据库的常用方式查询更新记录添加记录删除记录用结果集更新数据库预处理事务常见数据库连接查询Excel电子难点用结果集更新数据库预处理事务 关键实践查询记录更新记录删除记录18第6章在JSP中使用数据库本章将学习在JSP技术中怎样使用数据库,为了更好的体现一个Web应用将数据的处理和显示相分离,除个别例子为了说明基本知识外,本章大部分例子采用JSP+Tag模式,即JSP页面调用Tag文件来完成对数据库的操作。196.1.SQLServer2000数据库管理系统SQLServer2000数据库管理系统。1启动SQLServer2000单击“开始”→“程序”→“MicrosoftSQLServer”→“服务器管理器”2建立数据库单击“开始”→“所有程序”→“MicrosoftSQLServer”→“企业管理器”,新建立的数据库名称是“Warehouse”3创建表打开“企业管理器”,用鼠标单击“数据库”下的Warehouse数据库,在Warehouse管理的“表”的选项上单击右键,选择“新建表”,将出现相应的建表界面,我们建立的表是product,该表的字段(属性)为:number(char),name(char),madeTime(datetime),price(float).其中“number”字段为主键。206.1MySQL数据库MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。216.2JDBCJDBC(JavaDataBaseConnectivity)是Java运行平台的核心类库中的一部分,提供了访问数据库的API,它由一些Java类和接口组成。JDBC操作不同的数据库仅仅是连接方式上的差异而已,使用JDBC的应用程序一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库.我们经常使用JDBC进行如下操作:与一个数据库建立连接。向已连接的数据库发送SQL语句。处理SQL语句返回的结果。226.3.连接数据库的常用方式1.一种常见方式是使用JDBC-ODBC桥接器2.另一种是加载Java数据库驱动程序236.3.1JDBC-ODBC桥接器_1使用JDBC-ODBC桥接器方式的机制是,应用程序只需建立JDBC和ODBC之间的连接,而和数据库的连接由ODBC去完成。246.3.1JDBC-ODBC桥接器_2使用JDBC-ODBC桥接器访问数据库的步骤:建立JDBC-ODBC桥接器创建ODBC数据源Windows控制面板_管理工具_ODBC数据源和ODBC数据源建立连接try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){out.print(e);}Connectioncon=DriverManager.getConnection(“jdbc:odbc:数据源名字”,“登录名”,“密码”);256.3.2使用Java数据库驱动程序用Java语言编写的数据库驱动程序称作Java数据库驱动程序。JDBC可以调用本地的Java数据库驱动程序和相应的数据库建立连接。266.3.2使用Java数据库驱动程序Java通过JDBC连接数据库:JDBC(Java数据库连接)Java应用程序编程接口Java应用程序数据库插入修改删除查询276.3.2使用Java数据库驱动程序JDBC访问数据库的步骤:开始导入java.sql包加载并注册驱动程序创建一个Connection对象创建一个Statement对象执行语句关闭ResultSet对象关闭Statement对象关闭连接结束使用ResultSet对象286.3.2使用Java数据库驱动程序导入java.sql.*包/**©2011*济南大学版权所有*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/**.*@version*@author*/classJdbctest{/**构造方法*/protectedJdbctest(){}296.3.2使用Java数据库驱动程序publicstaticvoidmain(String[]args){try{Class.forName("org.gjt.mm.mysql.Driver");}catch(ClassNotFoundExceptionce){System.out.println(ce);}try{Stringurl="jdbc:mysql://localhost:3306/javaee?useUnicode=true&characterEncoding=gbk";Stringusername="liukun";Stringpwd="liukun";Connectioncon=DriverManager.getConnection(url,username,pwd);Statements=con.createStatement();ResultSetrs=s.executeQuery("select*fromfriends");while(rs.next()){……}rs.close();s.close();con.close();}catch(SQLExceptionce){System.out.println(ce);}}}加载并注册驱动程序创建一个Connection对象创建一个Statement对象执行语句使用ResultSet对象关闭对象和连接30实验七:利用JDBC连接MySQL数据库实验目的掌握利用JDBC连接MySQL数据库的方法实验要求启动MySQL,利用SQLyog管理工具,新建stu数据库(编码集用UTF-8或者GBK),新建user表,该表中有三个字段id(int)、username(varchar(10))、password(varchar(10))。并添加测试数据。编写login.jsp页面,页面中提供表单,让用户输入用户名和密码,提交给check.jsp。check.jsp负责连接数据库,验证用户输入的用户名和密码,如果正确,显示“登陆成功!”,如果不正确,显示错误信息。JSP应用程序设计济南大学信息学院刘鹍liukun@ujn.edu.cn回顾:JDBC开发步骤加载JDBC类库调用JDBC接口,访问数据库Class.forName()DriverManager.getConnection()conn.createStatement()stmt.executeQuery()遍历ResultSet关闭ResultSet、Statement、Connection3233回顾:加载JDBC驱动类库开发使用数据库的应用:JAR文件的绝对路径Web应用:多个应用使用同一个数据库:WEB-INF/lib{tomcat}/lib34回顾:JDBC程序访问数据库步骤开始导入java.sql包加载并注册驱动程序创建Connection对象创建Statement对象执行SQL语句关闭ResultSet对象关闭Statement对象关闭Connection对象使用ResultSet对象建立数据源(ODBC)附加相应产商提供的驱动结束35引言:JDBC主要接口Class.forName()声明驱动程序类型。Java.sql.DriverManager用来装载驱动程序,并且为创建新的数据库联接提供支持。Java.sql.Connection完成对某一指定数据库的联接Java.sql.Statement在一个给定的连接中作为SQL执行声明的容器,他包含了两个重要的子类型。Java.sql.PreparedSatement用于执行预编译的sql声明Java.sql.CallableStatement用于执行数据库中存储过程的调用Java.sql.ResultSet对于给定声明取得结果的途径。36引言:JDBC主要接口JDBC的几个参数:DriverURLUserpassword37引言:JDBC主要接口JDBCAPI是一系列的接口,他使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。386.4查询记录对一个数据库中表进行查询操作的具体步骤:创建SQL语句对象:Statement对象处理查询结果sql对象可以调用相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中。ResultSet对象使用next()方法一次看到一个数据行,用getXxx(索引或字段名)方法获取字段值。try{Class.forName("org.gjt.mm.mysql.Driver");Stringurl="jdbc:mysql://localhost:3306/javaee";Stringusername="liukun";Stringpwd="liukun";Connectionconn=DriverManager.getConnection(url,username,pwd);Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery("SELECT*FROM表名");}catch(Exceptione){System.out.println(e);}ResultSet对象常用方法方法使用说明beforeFirst()移动到结果集的开始位置(第一条记录前)first()移动到第一条记录previous()上移一条记录next()下移一条记录last()移动到最后一条记录afterLast()移动到结果集的结束位置(最后一条记录后)absolute(introw)移动到row指定的记录,绝对定位relative(introw)从当前记录开始,上移或下移row条记录isBeforeFirst()判断是否是结果集的开始位置isFirst()判断是否是结果集的第一条记录isLast()判断是否是结果集的最后一条记录IsAfterLast()判断是否是结果集的结束位置39406.4查询记录取不同字段类型数据的方法getByte("columnName"):取得当前行中列名为columnName的字节类型值getShort("columnName"):取得当前行中列名为columnName的短整类型值getInt("columnName"):取得当前行中列名为columnName的整型类型值getLong("columnName"):取得当前行中列名为columnName的长整类型值getFloat("columnName"):取得当前行中列名为columnName的单精实数类型值getDouble("columnName"):取得当前行中列名为columnName的双精类型值getBoolean("columnName"):取得当前行中列名为columnName的布尔类型值getString("columnName"):取得当前行中列名为columnName的字符串类型值getDate("columnName"):取得当前行中列名为columnName的日期类型值getTime("columnName"):取得当前行中列名为columnName的时间类型值416.4查询记录顺序查询通过conn.getMetaData()获取字段信息通过rs.getString(index)获取每条记录相应字段的内容随机查询为了在结果集中可以前后移动,随机显示若干记录,必须要返回一个可滚动的结果集。条件查询where=排序查询orderby模糊查询wherelike‘%%’Statementstmt=con.createStatement(inttype,intconcurrency);ResultSetrs=stmt.executeQuery(SQL语句);426.5更新记录可以使用SQL语句更新记录中字段的值。Statement对象调用方法:publicintexecuteUpdate(StringsqlStatement);通过参数sqlStatement指定的方式实现对数据库表中记录的字段值更新。例如:executeUpdate("UPDATEuserSETprice=6866WHEREname='海尔电视机'");436.6添加记录可以使用SQL语句添加新的记录。Statement对象调用方法:publicintexecuteUpdate(StringsqlStatement);通过参数sqlStatement指定的方式实现向数据库表中添加新的记录。例如:executeUpdate("INSERTINTOuserVALUES(100,'test','test’)");446.7删除记录可以使用SQL语句删除记录。Statement对象调用方法:publicintexecuteUpdate(StringsqlStatement);删除数据库表中的记录。例如:executeUpdate("DELETEFROMuserWHEREusername='test'");456.8用结果集操作数据库中的表可以使用内存中ResultSet对象对底层数据库表进行更新和插入操作。前提是要事先返回结果集。1、更新记录中的列值结果集rs的游标移动到第n行rs.absolute(n);结果集将第n行的p列的列值更新updateInt(StringcolumnName,intx)更新数据库中的表Connnectioncon=DriverManager.getConnection("","","");Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetrs=sql.executeQuery("SELECT*FROMproduct");rs.absolute(3);rs.updateString("username","java");rs.updateRow();466.8用结果集操作数据库中的表可以使用内存中ResultSet对象对底层数据库表进行更新和插入操作。前提是要事先返回结果集。2、插入记录结果集rs的游标移动到插入行rs.moveToInsertRow();更新插入行的列值updateXXX()rs.updateString(2,"test");插入记录insertRow()rs.insertRow();Connnectioncon=DriverManager.getConnection("","","");Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetrs=sql.executeQuery("SELECT*FROMproduct");……rs.moveToInsertRow();rs.updateString(1,number);rs.updateString(2,name);rs.insertRow();……476.9预处理语句预处理语句优点对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么con就可以调用方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象pre中PreparedStatementpre=con.prepareStatement(Stringsql);对象pre可以随时地执行下述方法,提高访问数据库的速度。ResultSetexecuteQuery()booleanexecute()intexecuteUpdate()486.9预处理语句2、使用统配符在对SQL进行预处理时可以使用统配符“?”来代替字段的值,只要在预处理语句执行之前再设置统配符所表示的具体值即可。例如:等同于:pre=con.prepareStatement("SELECT*FROMuserWHEREusername=‘liukun’");pre=con.prepareStatement("SELECT*FROMuserWHEREusername=?");pre.setString(1,"liukun");496.10事务事务由一组SQL语句组成,所谓“事务处理”是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。事务是保证数据库中数据完整性与一致性的重要机制。JDBC事务处理步骤如下:1.setAutoCommit(booleanautoCommit)方法为了能进行事务处理,必须关闭连接对象con的默认设置。con.setAutoCommit(false);2.commit()方法连接对象con调用commit()方法就是让事务中的SQL语句全部生效。con.commit();3.rollback()方法连接对象con调用rollback()方法,撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据发生变化的SQL语句操作,将数据库中的数据恢复到commi()方法执行之前的状态。con.rollback();506.11常见数据库连接一、MicrosoftSQLServer(microsoft)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");cn=DriverManager.getConnection("jdbc:microsoft:sqlserver://DBServerIP:1433;databaseName=master",userName,password);二、MySQLClass.forName("com.mysql.jdbc.Driver")或Class.forName("org.gjt.mm.mysql.Driver");cn=DriverManager.getConnection("jdbc:mysql://DBServerIP:3306/myDatabaseName",userName,password);516.11常见数据库连接三、Oracle(classes12.jar)安装Oracle后,找到目录Oracle/ora81/jdbc中的classes.jar(classes12.jar),即用java编写Oracle数据库驱动程序。Class.forName("oracle.jdbc.driver.OracleDriver");cn=DriverManager.getConnection("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL",userName,password);四、DB2Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");Stringurl="jdbc:db2://dburl:port/DBname"cn=DriverManager.getConnection(url,userName,password);526.11常见数据库连接五、Sybase(jconn2.jar)Class.forName("com.sybase.jdbc2.jdbc.SybDriver");cn=DriverManager.getConnection("jdbc:sybase:Tds:DBServerIP:2638",userName,pas如果没有JDBC驱动程序,可用使用Sun的JDBC-ODBC桥接驱动程序,其语句为:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncn=DriverManager.getConnection("jdbc:odbc:"+sDsn,userName,password);536.11常见数据库连接Access也是比较流行的一种数据库管理系统,操作简单、使用方便。一些规模不大的Web应用经常使用Access数据库数据库管理系统。1.建立JDBC-ODBC桥接器2.创建ODBC数据源时选择的数据库驱动程序为:MicrosoftAccessDriver(*.mdb)3.和ODBC数据源建立连接Connectioncon=DriverManager.getConnection("jdbc:odbc:数据源名字","登录名","密码");try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){out.print(e);}546.12查询Excel电子表格通过JDBC-ODBC桥接器访问Excel电子表格,步骤:1.设置数据源为数据源选择的驱动程序是MicrosoftExcelDriver。2.选择表必须在电子表格中选出一工作区作为连接时使用的表。在Excel电子表格中拖动鼠标选出范围。然后在Excel菜单中选择“插入”→“名称”→“定义”,给选中的工作区命名(这一工作区的名称将作为连接时使用的表名)。55补充:使用jxl操作ExcelExcel读取:开发时需要包含以下类 <%@pageimport=“com.ionglobal.excel.*”%> ExcelReader=newExcelRead();Stringfilename="c:/temp.xls"; //设置读取的文件名 er.ExcelOpen(filename);//调用JXL打开文件 er.SheetOpen(1); //打开Excel的第1个sheet for(intj=0;j<10;j++){     for(inti=0;i<10;i++){//读取Excel文件的第i行,第j列的单元格读出内容为1字符串          System.out.print(er.getSheetContent(i,j));   } } er.ExcelClose();//关闭Excel文件56补充:使用jxl操作ExcelExcel的写入:此类需要com/ionglobal/excel下面的类:ExcelWriteew=newExcelWrite();Stringfilename="c:/temp.xls";ew.ExcelCreate(filename);//创建Excel文件名ew.ExcelCreateSheet("Test",0);//建立第1个Sheet//在第1个sheet的1行1列插入值valueoneew.AddLable(1,1,"valueone");ew.AddNumber(1,2,13);ew.ExcelClose(filename,"",0);//关闭并保存Excel57补充:了解数据库中的信息在和数据库建立连接后,就可以获得有关数据源的各种信息:表,列,数据类型,存储过程等。这些信息通过DatabaseMetaData类的对象上实现的。DatabaseMetaDatadbma=conn.getMetaData();其中提供了很多方法获取数据源的各个方面的信息,这些方法中,有一些用字符串匹配搜索模式作为参数,“_”匹配单个字符,“%”匹配0个或多个字符.一个值为null的JavaString可以与任何字符串匹配。对某些方法,有些驱动程序可能不支持,会产生一个SQLException意外。58补充:了解数据库中的信息基本信息getURL();getUserName()isReadOnly()getDatabaseProduceName()j;getDriverName();getDriverVersion();其他getTables(),getColumns(),getIndexInfo();59补充:获取结果集的信息ResultsetMetaData可以获取结果集中的列的名称,数据类型等.ResultsetMetaDatarsmd=rs.getMetaData();getColumnCount();getColumnName(intcolumn);getColumnType(intcolumn);返回int值getColumnTypeName(intcolumn);返回字符串isReadOnly(intcolumn)isNullable(intcolumn)实验八:利用JDBC实现数据库的增删改查实验目的:掌握利用JDBC对数据库进行增删改查的方法实验要求:在MySQL数据库中新建数据库stu(编码集用UTF-8或者GBK),新建user表,该表中有三个字段id(int)、username(varchar(10))、password(varchar(10))。编写一个注册页面register.jsp,提供一个用户注册的表单,并把用户填写的信息提交给add.jsp。add.jsp利用JDBC连接数据库,并实现往数据库中插入一条数据,成功跳转到list.jsp页面,失败跳转回register.jsp页面。list.jsp页面负责显示所有用户信息,并提供删除和修改功能,分别对应edit.jsp和delete.jsp。*edit.jsp和delete.jsp页面分别完成用户信息修改和删除功能,成功后给用户相应提示信息。注:该部分内容选做。扩展实验:使用jstl标签更改以上功能。60
/
本文档为【第六章JSP中使用数据库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索