回 帖 发 新 帖 刷新版面

主题:关于数据库插入的问题

<%
String host="localhost";
String user="root";
String pw="2";
String db="yu";

Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://"+host+"/"+db;
Connection con=DriverManager.getConnection(url,user,pw);
Statement st=con.createStatement();

request.setCharacterEncoding("gb2312");
String username=request.getParameter("username");
String password=request.getParameter("password");

String sql="insert into yuyang values(0,'"+gb2iso(username)+"','"+gb2iso(password)+"',)";
st.executeUpdate(sql);
st.close();
con.close();
response.sendRedirect("index.jsp");
%>

哪位大哥可以帮帮小弟看看这上面的插入数据库的SQL语句哪里错了啊。

为什么一运行就出现以下错误的.

javax.servlet.ServletException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    org.apache.jsp.login_jsp._jspService(org.apache.jsp.login_jsp:85)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1027)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537)
    com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564)
    com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485)
    org.apache.jsp.login_jsp._jspService(org.apache.jsp.login_jsp:75)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.

数据表里只有两field 分别是username和password

哪位大哥帮帮小弟改改啊。谢谢了!!!

回复列表 (共5个回复)

沙发

String sql="insert into yuyang values('"+username+"','"+password+"'";
gb2iso()这个函数做什么啊?

板凳

前面已经指定编码了,如果是转换编码的,那么加上应该没错,只有返回string

3 楼

你是POST提交还是GET提交?如果POST提交,不用编码转换,那样会出错。

数据库第一个字段是什么?  应该是标识列吧?怎么插数据了?

4 楼

楼主怎么都不来看看

5 楼


String sql="insert into yuyang values(0,'"+gb2iso(username)+"','"+gb2iso(password)+"'[u][b],[/b][/u])";
是你的插入语句写错了。多了个逗号。(已经用下划线给你标出来了)。
至于你从页面提交的内容如果你的数据库使用的是默认的latin1才有必要使用你的gb2iso()调用。

我来回复

您尚未登录,请登录后再回复。点此登录或注册