<%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
<b><br>通讯录一览表</b>
<table width="450" border="0" cellpadding="1" bgcolor="#000000">
<tr>
<th bgcolor="#FFFFFF" scope="col">编号</th>
<th bgcolor="#FFFFFF" scope="col">姓名</th>
<th bgcolor="#FFFFFF" scope="col">电话</th>
</tr>
<%! ResultSet rs=null;%>
<%
int type=-1;//定义一个标志变量
try{
type=Integer.parseInt(request.getParameter("do"));//取得参数do的值,这个值决定了用户对数据库的操作类型
}catch(Exception eee){
type=0;//如果没有这个参数或者其他原因发生异常,则默认为0
}
try{
Statement st=getStatement();//取得Statement对象,getStatement()函数将在步骤8中定义
String name=request.getParameter("name");//取得参数name的值
switch(type){
//如果为0,表示用户没有操作,则把所有数据库中的所有记录提取出来
case 0:
rs=st.executeQuery("select * from friends");//查询全部
break;
//如果为1,表示用户执行的是查询操作,则把符合要求的结果提取出来
case 1:
name=new String(name.getBytes("ISO-8859-1"));//改变字符编码,否则会出现中文乱码问题
rs=st.executeQuery("select * from friends where name like '%"+name+"%'");//特定查询
break;
//如果为2,表示用户执行的是删除操作,则执行删除后再把控制权转向本页面
case 2:
name=new String(name.getBytes("ISO-8859-1"));
st.executeUpdate("delete from friends where name ='"+name+"'");//删除
response.sendRedirect("db1.jsp");
break;
//如果为3,表示用户执行的是插入操作,则执行插入后再把控制权转向本页面
case 3:
name=new String(name.getBytes("ISO-8859-1"));
String tel=request.getParameter("tel");
st.executeUpdate("insert friends values('0','"+name+"','"+tel+"’)");//添加
response.sendRedirect("db1.jsp");
break;
//如果为4,表示用户执行的是修改操作,则执行插入后再把控制权转向本页面
case 4:
name=new String(name.getBytes("ISO-8859-1"));
tel=request.getParameter("tel");
String sql="update friends set tel='"+tel+"' where name=’"+name+"'";
st.executeUpdate(sql);//修改
response.sendRedirect("db1.jsp");
break;
}
%>
<%
while(rs.next()){//判断是否还有下一条记录,如果有则指向此记录
%>
<tr>
<td bgcolor="#FFFFFF" ><%=rs.getInt("id") %></td>
<td bgcolor="#FFFFFF"><%=rs.getString("name") %></td>
<td bgcolor="#FFFFFF"><%=rs.getString("tel") %></td>
</tr>
<%}
rs.close();//关闭rs对象
st.close();//关闭st对象
}catch(Exception ee){
out.print(ee.toString());
}
%>
</table>
<form id="form1" name="form1" method="post" action="db1.jsp">
<div align="left">
<input type="hidden" name="do" value="1"/>
<input type="text" name="name" value="姓名"/>
<input type="submit" name="Submit" value="查询"/>
</div>
</form>
<form id="form2" name="form2" method="post" action="db1.jsp">
<div align="left">
<input type="hidden" name="do" value="2"/>
<input type="text" name="name" value="姓名"/>
<input type="submit" name="Submit2" value="删除"/>
</div>
</form>
<form id="form3" name="form3" method="post" action="db1.jsp">
<input type="hidden" name="do" value="3"/>
<p align="left">
<input type="text" name="name" value="姓名"/>
</p>
<p align="left">
<input type="text" name="tel" value="电话"/>
<input type="submit" name="Submit22" value="添加"/>
</p>
</form>
<form id="form4" name="form4" method="post" action="db1.jsp">
<input type="hidden" name="do" value="4"/>
<p align="left">
<input type="text" name="name" value="姓名"/>
</p>
<p align="left">
<input type="text" name="tel" value="电话"/>
<input type="submit" name="Submit222" value="修改"/>
</p>
</form>
<%!
//连接数据库,取得Statement对象
public Statement getStatement(){
try{
Class.forName("com.mysql.jdbc.Driver");
//加载驱动程序
String url="jdbc:MySQL://localhost:3306/friend?user=root&password=425mys175&characterEncoding=gb2312";
//test为用户创建数据库
Connection con=DriverManager.getConnection(url);
return con.createStatement();
}
catch(Exception e){ return null;}
}
%>
------解决思路----------------------
你的SQL明显有语法错误,输入法都不一样
------解决思路----------------------
咋一看看到有个sql语句错了,41行(insert into),应该是你SQL语法有问题吧,你仔细看下!
------解决思路----------------------
MVC不好么?这样子写代码多臃肿,你确定你的JSP编码格式和指定的 编码匹配?
------解决思路----------------------
如2楼说的,输入法也有问题,符号有些是中文的
------解决思路----------------------
41行insert可以不用into,但是你insert值到什么东西里去不列出来,真的大丈夫?
------解决思路----------------------
没个IDE工具,单词错了都不显示出来,看看你的单引号和逗号