写了段代码,连接mysql数据库。表名是zxinfo内有3个属性 id(int),name(int),age(decimal),把name属性取出和一个int类型50常量相加再写回name属性中。现在的问题是,可以取出但不能写入。望高手指点一二,不胜感激,代码入下:import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class testbill  
{
public static void main(String[] args)
{
try
{
Connection conn = null;
Statement st = null;

ResultSet rs = null;

Class.forName("com.mysql.jdbc.Driver");

    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=zx&password=zx");
    System.out.println("ke yi");
    String sql = "select id,name,age from zxinfo";
    
    String zxsql = "update zxinfo set id=?,name=?,age=? where id=2";
    st = conn.createStatement();
    
    rs = st.executeQuery(sql);
    PreparedStatement ps = conn.prepareStatement(zxsql);
    
    if (rs.next())
    {
    int  xx = rs.getInt("name");
    xx = xx+50;
    System.out.println("keyi o");
    ps.setInt(2,xx);
    System.out.println("keyi oo");
    ps.executeUpdate();
    
    
    System.out.println("keyi ooo");
    System.out.println(xx);
    }
    }
catch (ClassNotFoundException ex)
{
System.out.println(ex);
}
        catch(SQLException ex)
        {
          System.out.println("bu xing");  
            
        } 


}
}

解决方案 »

  1.   

    从system.out.println来看应该是System.out.println("keyi oo")和System.out.println("keyi ooo")之间报的错.
      

  2.   

    要有update的权限才能修改
      

  3.   

    把String zxsql = "update zxinfo set id=?,name=?,age=? where id=2";改为
    String zxsql = "update zxinfo set name=? where id=2";
    把ps.setInt(2,xx);改为ps.setInt(1,xx);试试。
      

  4.   

    数据库权限是开到最大的。
    改为String zxsql = "update zxinfo set name=? where id=2";
    把ps.setInt(2,xx);改为ps.setInt(1,xx); 也不行
    而且又有新的问题,我第一个帖子说 ps.executeUpdate();执行不通过。现在是ps.executeUpdate();执行通过,但数据库name值并不变化,我怀疑是否是ps.setInt(2,xx);中的xx代码认为是空,因为只有这样才会又不报错又不改数据库值。难道是xx传的是地址而不是取出的值吗?
      

  5.   

    String zxsql = "update zxinfo set id=?,name=?,age=? where id=2";
    ps.executeUpdate();
    把ps.executeUpdate();改为ps.execute();试试
      

  6.   

    String zxsql = "update zxinfo set name=? where id=2";
        st = conn.createStatement();
        
        rs = st.executeQuery(sql);
        PreparedStatement ps = conn.prepareStatement(zxsql);
        
        if (rs.next())
        {
        int xx = rs.getInt("name");
        xx = xx+50;
        System.out.println("keyi o");
        ps.setInt(1,xx);
        System.out.println("keyi oo");
        ps.executeUpdate();
        
        
        System.out.println("keyi ooo");
        System.out.println(xx);
        }
      

  7.   

    String zxsql = "update zxinfo set id=?,name=?,age=? where id=2";这定义了3个参数;后面只赋值了一个参数。