- Java Web程序开发范例宝典
- 王国辉 郭铁 李根福编著
- 57字
- 2020-06-27 11:01:05
4.13 在线删除表或索引
在开发网络数据库程序时,经常需要动态创建或删除数据表或索引。可以设计网站后台程序满足这样的需求。
实例111 在线删除指定的一个数据表
本实例是一个数据库操作的程序
实例位置:光盘\mingrisoft\04\111
实例说明
在开发网络数据库程序时,对数据库中的数据操作是非常重要的,本实例实现通过SQL语句删除数据库中指定的数据表。运行程序,选择数据表名前面的单选按钮,单击“删除”按钮,选中的数据表将会被删除,如图4.75所示。
图4.75 在线删除指定的一个数据表
技术要点
本实例主要应用了SQL语句中的DROP TABLE语句,语法如下:
DROP TABLE table_name
参数说明:
● table_name:要删除的数据表的名称。
实现过程
(1)创建UserDao类,定义数据库连接和执行查询操作的方法。
(2)创建JavaScript脚本语句,定义Delete()函数实现删除指定数据表的操作,代码如下:
<script language="JavaScript" type="text/JavaScript"> function Delete(){ <% String Table = ""; Table=request.getParameter("radiobutton"); if (Table!=""){ Exec("Drop Table "+Table); } %> } </script>
(3)创建index.jsp页面,通过UserDao类中的selectStatic()方法,查询出指定数据库中的数据表,并通过while语句输出查询结果集中的数据。创建form表单,将查询出的数据作为单选按钮的值。关键代码如下:
<jsp:useBean id="dao" scope="page" class="com.pkh.dao.UserDao" /> <form name="form1" method="post" action="" onsubmit="Delete()"> <% ResultSet Rs = dao.selectStatic("Select * From Sysobjects Where xtype = 'u'"); while(Rs.next()){ %> <tr> <td bgcolor="#CCFF66"> <input type="radio" name="radiobutton" value="<%=Rs.getString("name") %>"><%=Rs.getString("name") %> </td> </tr> <% } %> <input type="submit" name="Submit" value="删除"> </form>
举一反三
根据本实例,读者可以:
开发数据库系统;
删除临时数据表;
删除主从数据表。
实例112 在线删除多个指定的数据表
本实例是一个数据库操作的程序
实例位置:光盘\mingrisoft\04\112
实例说明
本实例主要通过复选框的形式在线删除指定的多个数据表。运行程序,在页面上将会显示出数据库中的所有用户表,选中要删除的数据表前面的复选框,单击“删除”按钮,即可将选中的所有数据表从数据库中删除,如图4.76所示。
图4.76 在线删除多个指定的数据表
技术要点
本实例首先利用sysobjects表将数据库中的所有用户表显示出来,并在每个表名的前面加上复选框,设置复选框的名称都相同,然后利用getParameterValues()方法返回字符串数组,该数组为所选中的复选框的所有名称,最后循环执行数据表删除操作。
实现过程
(1)创建UserDao类,定义数据库连接和执行查询操作的方法。
(2)创建JavaScript脚本语句,定义Delete()函数实现删除指定数据表的操作,代码如下:
<script language="JavaScript" type="text/JavaScript"> function Delete(){ <% String Table[]=request.getParameterValues("checkbox"); //获取复选框的值 if (Table!=null) for(int i=0;i<Table.length;i++){ //循环输出复选框的值 dao.executeUpdate("Drop Table"+Table[i]); //执行删除表的操作 } %> } </script>
(3)创建index.jsp页面,通过UserDao类中的selectStatic()方法,查询出指定数据库中的数据表,并通过while语句输出查询结果集中的数据。创建form表单,将查询出的数据作为单选按钮的值。关键代码如下:
<jsp:useBean id="dao" scope="page" class="com.pkh.dao.UserDao" /> <form name="form1" method="post" action="" onsubmit="Delete()"> <% ResultSet Rs = dao.selectStatic("Select * From Sysobjects Where xtype = 'u'"); while(Rs.next()){ //循环输出数据库中的数据表 %> <tr> <td bgcolor="#CCFF66"> <input type="checkbox" name="checkbox" value="<%=Rs.getString("name") %>"><%=Rs.getString("name") %> </td> </tr> <% } %> <input type="submit" name="Submit" value="删除"> </form>
举一反三
根据本实例,读者可以:
维护网站后台数据库程序;
清除网站中的临时数据表;
删除基础信息表。
实例113 在线删除指定数据表中的指定索引
本实例是一个提高效率、人性化的程序
实例位置:光盘\mingrisoft\04\113
实例说明
在开发网络程序时,索引的创建与删除有助于数据表的快速查询。本实例完成了索引的创建与
图4.77 在线删除指定数据表中的指定索引
删除。运行程序,首先将数据表中的所有索引显示出来。单击“创建”按钮,将进入索引创建页面,在该页面中输入索引的名称和设置索引的字段,单击“创建索引”按钮,索引将被创建。在主页面单击“删除”按钮,删除当前索引,如图4.77所示。
技术要点
本实例主要使用SQL语句的sp_helpindex过程来显示表中的索引信息,用DROP INDEX语句删除表中的索引,用CREATE INDEX语句来创建表中的索引。
(1)CREATE INDEX语句。
语法如下:
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) [ WITH < index_option > [ ,...n] ] [ ON filegroup ] < index_option > ::= { PAD_INDEX | FILLFACTOR = fillfactor | IGNORE_DUP_KEY | DROP_EXISTING | STATISTICS_NORECOMPUTE | SORT_IN_TEMPDB }
参数说明:
● UNIQUE:指定创建唯一索引。注意:SQL Server不允许为已经包含重复值的字段创建唯一索引。如果尝试这样做,SQL Server会显示错误信息,因此必须先删除重复值,才能为这些字段创建唯一索引。
● CLUSTERED:指定创建一个聚集索引。如要没有指定CLUSTERED,则创建非聚集索引。
● NONCLUSTERED:指定创建一个非聚集的索引。
● index_name:指定创建索引的索引名。
● table:指定要创建索引的表。
● column:指定应用索引的字段。如果指定的是多个字段,可以对多个字段的组合值创建组合索引。
(2)DROP INDEX语句。
语法如下:
DROP INDEX 'table.index | view.index' [ ,...n ]
参数说明:
● table | view:是索引列所在的表或索引视图。
● index:是要删除的索引名称。索引名称必须符合标识符的规则。
● n:表示可以指定多个索引的占位符。
实现过程
(1)创建UserDao类,定义数据库连接和执行查询语句的方法。
(2)创建index.jsp页面,通过UserDao类中的selectStatic()方法,查询出数据库中数据表的索引;并且添加表单,设置添加索引的“创建”、“删除”按钮,代码如下:
<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %> <jsp:useBean id="dao" scope="page" class="com.pkh.dao.UserDao" /> <form name="form1" method="post" action=""> <% ResultSet Rs=dao.selectStatic("sp_helpindex tb_ClassList"); //获取查询结果集 while(Rs.next()){ //输出数据表中的索引 %> <tr bgcolor="#33FFFF"> <td height="22" bgcolor="#FFFFFF" class="STYLE2"><div align="center"><%=Rs.getString("index_name")%></div></td> <td bgcolor="#FFFFFF" class="STYLE2"><div align="center"><%=Rs.getString("index_keys")%></div></td> <td bgcolor="#FFFFFF" class="STYLE2"><div align="center"> <input type="button" name="Submit" value="删除" onclick="window.location.href='index_ok.jsp?orderid=<%= Rs.getString("index_name")%>';">/ <input name="Submit" type="button" id="Submit" value="创建" onclick="window.location.href='index_ok.jsp';"> </div></td> </tr> <% } %> </form>
(3)创建index_ok.jsp页面,通过DROP INDEX语句删除表中指定的索引;通过CREATE INDEX语句动态创建表的索引。关键代码如下:
<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage=""%> <jsp:useBean id="dao" scope="page" class="com.pkh.dao.UserDao" /> <% boolean m=dao.executeUpdate("drop index tb_ClassList."+request.getParameter("orderid")); //执行删除索引 if(m){ out.print("<script>window.alert('索引删除成功!');window.location.href='index.jsp';</script>"); } %> <% if (request.getParameter("textfield")!=""){ boolean i = dao.executeUpdate("CREATE INDEX "+request.getParameter("textfield")+" on tb_ClassList ("+request. getParameter("select")+")"); //创建索引 if (i){ out.print("<script>window.alert('索引添加成功!'); </script>"); } } %> <form name="form1" method="post" action="" onsubmit="check()"> <input type="text" name="textfield"> <select name="select"> <% ResultSet Rs=dao.selectStatic("Select top 0*From tb_ClassList"); //获取查询结果集 ResultSetMetaData rsmd=Rs.getMetaData(); //输出数据表中的字段 for (int i=1;i<rsmd.getColumnCount();i++){ %> <option value="<%=rsmd.getColumnName(i)%>"><%=rsmd.getColumnName(i)%></option> <% } %> </select> <input type="submit" name="Submit" value="创建索引"> <input type="reset" name="Submit2" value="重置"> <input type="button" name="Submit3" value="返回" onclick="window.location.href='index.jsp';"> </form>
举一反三
根据本实例,读者可以:
开发在线美食查询系统;
开发在线搜索系统;
开发在线员工查询系统。