在JSP中,向数据库插入记录,values后用具体的值插入成功,用变量就不行,为什么呢?

ldxy_lm 2008-04-13 11:10:46
这是两个文件的代码:
dbf_zengjia.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink >
<Font size=4>
<FORM action="addResult.jsp" method=post>
输入要增加的学生信息:<BR>
学    号:
<input type="text" name="nn"><BR>
姓    名:
<input type="text" name="xm"><BR>
数学成绩:
<Input type="text" name="math"><BR>
英语成绩:
<Input type="text" name="english"><BR>
物理成绩:
<Input type="text" name="physics"> <BR>
<Input type="submit" name="b" value="提交">
<P>数据库增加前的数据记录是:
<% String name,numb1;
int math,physics,english;
Connection con;
Statement sql;
ResultSet rs;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
}
try{ con=DriverManager.getConnection("jdbc:odbc:sun","sa","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM students");
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"学号");
out.print("<TH width=100>"+"姓名");
out.print("<TH width=50>"+"数学成绩");
out.print("<TH width=50>"+"物理成绩");
out.print("<TH width=50>"+"英语成绩");
out.print("</TR>");
while(rs.next()){
out.print("<TR>");
numb1=rs.getString(1);
out.print("<TD >"+numb1+"</TD>");
name=rs.getString(2);
out.print("<TD >"+name+"</TD>");
math=rs.getInt("数学成绩");
out.print("<TD >"+math+"</TD>");
physics=rs.getInt("物理成绩");
out.print("<TD >"+physics+"</TD>");
english=rs.getInt("英语成绩");
out.print("<TD >"+english+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
con.close();
}
catch(SQLException e1) {}
%>
</Font>
</BODY>
</HTML>


addResult.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink >
<Font size=3>
<%
//获取提交的学号
String xueh1=request.getParameter("nn");
if(xueh1==null)
{xueh1="";
}
byte b[]=xueh1.getBytes("ISO-8859-1");
xueh1=new String(b);
//获取提交的姓名
String xm1=request.getParameter("xm");
if(xm1==null)
{xm1="";
}
byte c[]=xm1.getBytes("ISO-8859-1");
xm1=new String(c);
//获取提交的新的数学成绩:
String newMath= request.getParameter("math");
if(newMath==null)
{newMath="0";
}

//获取提交的新的英语成绩:
String newEnglish= request.getParameter("english");
if(newEnglish==null)
{newEnglish="0";
}
//获取提交的新的物理成绩:
String newPhysics=request.getParameter("physics");
if(newPhysics==null)
{newPhysics="0";
}
Connection con=null;
Statement sql=null;
ResultSet rs=null;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try {con=DriverManager.getConnection("jdbc:odbc:sun","sa","");
sql=con.createStatement();
int sx=Integer.parseInt(newMath);
int wl=Integer.parseInt(newPhysics);
int yy=Integer.parseInt(newEnglish);
out.println(sx==7);
out.println(wl==7);
out.println(yy==7);

//执行增加记录操作:
sql.executeUpdate("INSERT INTO students VALUES(xueh1,xm1,sx,wl,yy)");
//显示增加后的表中的记录:
%>
<P>增加后的表的记录:
<%
rs=sql.executeQuery("SELECT * FROM students");
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"学号");
out.print("<TH width=100>"+"姓名");
out.print("<TH width=50>"+"数学成绩");
out.print("<TH width=50>"+"物理成绩");
out.print("<TH width=50>"+"英语成绩");
out.print("</TR>");
while(rs.next()){
out.print("<TR>");
out.print("<TD >"+ rs.getString(1)+"</TD>");
out.print("<TD >"+ rs.getString(2)+"</TD>");
out.print("<TD >"+ rs.getInt("数学成绩")+"</TD>");
out.print("<TD >"+ rs.getInt("物理成绩")+"</TD>");
out.print("<TD >"+ rs.getInt("英语成绩")+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
con.close();
}
catch(SQLException e){
}
%>
</FONT>
</BODY>
</HTML>

插入语句如果直接用("001","zhansan",66,66,66)增加正常,象上面这样就不行,郁闷
...全文
78 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
panxuan 2008-04-13
  • 打赏
  • 举报
回复
当然不行了。
修改如下:
sql.executeUpdate("INSERT INTO students VALUES('"+xueh1+"','"+xm1+"',"+sx+","+wl+","+yy+")");

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧