java.sql.SQLException: [Microsoft][ODBC Microsoft Access 驱动程序] 参数不足,期待是 1。 求解!!!

import java.sql.*;
public class Zm
{
public static void main(String args[])
{
Connection con=null;
Statement sql;
ResultSet rs;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{
System.out.println(""+e);
}
try
{
double n = 1;
con=DriverManager.getConnection("jdbc:odbc:18","","");
con.setAutoCommit(false);
sql=con.createStatement();
rs=sql.executeQuery("SELECT* FROM shop WHERE number='A001'");
rs.next();
double priceOne=rs.getDouble("price");
System.out.println("事务操作之前的A001的PRICE:"+priceOne);

rs=sql.executeQuery("SELECT* FROM shop WHERE number='B002'");
rs.next();
double priceTwo=rs.getDouble("price");
System.out.println("事务操作之前的B002的PRICE:"+priceTwo);

priceOne=priceOne-n;
priceTwo=priceTwo+n;

sql.executeUpdate("UPDATE shop SET price="+priceOne+"WHERE number='A001'");
sql.executeUpdate("UPDATE shop SET price="+priceTwo+"WHERE number='B002'");

con.commit();
con.setAutoCommit(true);

rs=sql.executeQuery("SELECT* FROM shop WHERE number='A001'");
rs.next();
priceOne=rs.getDouble("price");
System.out.println("事务操作之后的A001的PRICE:"+priceOne);

rs=sql.executeQuery("SELECT* FROM shop WHERE number='B002'");
rs.next();
priceTwo=rs.getDouble("price");
System.out.println("事务操作之后的B002的PRICE:"+priceTwo);
con.close();
}
catch(SQLException e)
{
try
{
con.rollback();
}
catch(SQLException exp){}
System.out.println(e);
}

}
}

第1个回答  2013-06-20
这个错误说明的表错 行错 列错 或者语句拼接错误等!
你看看你的sql语句的拼接处where那里和价格是不是连着一块了!
第2个回答  2013-06-20
这句 "UPDATE shop SET price="+priceOne+"WHERE number='A001'" 你的where前面没空格..

你可以试着打印一下你拼出来的sql语句....看是否有错
相似回答