写了段代码,连接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");
}
}
}
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");
}
}
}
String zxsql = "update zxinfo set name=? where id=2";
把ps.setInt(2,xx);改为ps.setInt(1,xx);试试。
改为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传的是地址而不是取出的值吗?
ps.executeUpdate();
把ps.executeUpdate();改为ps.execute();试试
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);
}