<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink ><Font size=1>
  <% //获取提交的姓名:
    String name=request.getParameter("name");
          if(name==null)
            {name="";
            }
     byte b[]=name.getBytes("ISO-8859-1");
     name=new String(b);
     //获取提交的新的数学成绩:
    String newMath=request.getParameter("math");
          if(newMath==null)
            {
              newMath="-100";
            }
    //获取提交的新的英语成绩:
    String newEnglish=request.getParameter("english");
          if(newEnglish==null)
            {
              newEnglish="-100";
            }
     //获取提交的新的物理成绩:
     String newPhysics=request.getParameter("physics");
          if(newPhysics==null)
            {
              newPhysics="-100";
            } 
    Connection con=null;
    Statement sql=null;
    ResultSet rs=null;
    String number,xingming;
    int math,english,physics;
       try{
             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          }
       catch(ClassNotFoundException e){}
       try {
           con=DriverManager.getConnection("jdbc:odbc:sun","sa","");
           sql=con.createStatement();
           String condition1=
              "UPDATE students SET 数学成绩 = "+newMath+" WHERE 姓名="+"'"+name+"'" ,
                condition2=
              "UPDATE students SET 英语成绩 = "+newEnglish+" WHERE 姓名="+"'"+name+"'" ,
               condition3=
              "UPDATE students SET 物理成绩 = "+newPhysics+" WHERE 姓名="+"'"+name+"'" ;
          //执行更新操作:
          sql.executeUpdate(condition1);
          sql.executeUpdate(condition2);
          sql.executeUpdate(condition3);
          //显示更新后的表中的记录:
     %>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是一个更新学生成绩的页面代码,我的问题是 "UPDATE students SET 数学成绩 = "+newMath+" WHERE 姓名="+"'"+name+"'" 中的newMath 为什么要为什么要写成"+newMath+",加上这个+号和双引号什么意思?还有这句 :          姓名="+"'"+name+"'" 这些加号和双引号都是什么意思?
正常的UPDATA语句不是"UPDATE students SET 数学成绩 = 88 WHERE 姓名 = '小王'" 吗?为什么写成这样?我是新手,请大家指点!先谢谢大家了

解决方案 »

  1.   

    sql更新数字是update xxx set aaa=2,更新字符串是update xxx set aaa='a'所以你要拼接出这样的sql语句,"+newMath+"的加号是字符串拼接,
    楼主上学时没学过java基础吗
      

  2.   

    正常的UPDATA语句不是"UPDATE students SET 数学成绩 = 88 WHERE 姓名 = '小王'" 吗?为什么写成这样?
    你这样写不是把更新的内容写死了吗,上面的是通过java的字符串串过来的,动态的
      

  3.   

    小弟是新手啊,好多问题还没有融会贯通
    String newMath=request.getParameter("math");
    既然newMath是String类型的,更新的不就是字符串吗?那为什么没用''?
    姓名="+"'"+name+"'" 这些加号和双引号都是什么意思?
      

  4.   

    "UPDATE students SET 数学成绩 = "+newMath+" WHERE 姓名="+"'"+name+"'" 
    双引号引起来的就是sql字符串 从外面传过来的变量就需要用加号拼接起来
    单引号引起来的是"'"+name+"'", name这个变量的类型是一个字符型,所以要用单引号。
    单引号也需要通过字符窜的拼接。
      

  5.   

    姓名="+"  '  "+name+"  '  " 这些加号和双引号都是什么意思?
    在双引号中间是有单引号的,仔细一点啊,
    "UPDATE students SET 数学成绩 = "+newMath+" WHERE 姓名="+"'"+name+"'"
    数学成绩不是字符型吧,应该是float类型(不严谨的也可以是Int),你看下数据库里的类型,直接从表单里面传过来
    的是一个字符串,如果数据库里的类型是float,所以还要转型为float型
    float meth=Float.parseFloat(newMeth);
    //int id=Integer.parseInt(newMeth);Int型就转Int型咯。
      

  6.   

     "UPDATE students SET 数学成绩 = "+newMath+" WHERE 姓名="+"'"+name+"'"
    因为在数据库里,姓名一定是字符varchar类型,所以在正常的SQL语句是:UPDATE students SET 数学成绩 =newMath WHERE 姓名="NAME",但我们要把NAME当做一个变量传进去,所以用+ +;又因为语句中有好多",所以把变量用''括起来,效果一样的.
      

  7.   

    SQL语句中规定,字符串要用引号引起来的,你可以试着去掉,看报的错就知道了
      

  8.   

    是把update语句组合成一个字符串,+是用来连接前后字符串的,'是用来引起字符类型字段的,你可以把组合后的update字符串打印到后台看看就明白了。