当前位置: 代码迷 >> Java Web开发 >> JSP+MySQL建立电话簿提示com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
  详细解决方案

JSP+MySQL建立电话簿提示com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

热度:1234   发布时间:2016-04-16 21:32:52.0
JSP+MySQL建立电话本提示com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
<%@ 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编码格式和指定的 编码匹配?
------解决思路----------------------
引用:
你的SQL明显有语法错误,输入法都不一样
如2楼说的,输入法也有问题,符号有些是中文的
------解决思路----------------------
41行insert可以不用into,但是你insert值到什么东西里去不列出来,真的大丈夫?
------解决思路----------------------
引用:
Quote: 引用:

你的SQL明显有语法错误,输入法都不一样
哪不一样了啊?输入英文也不行


没个IDE工具,单词错了都不显示出来,看看你的单引号和逗号
  相关解决方案