麻烦大家帮我看看下面这个代码,主要是数据库更新这一块出现了问题,我把这个放在一个按钮监听类里面,运行时会出现无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'的错误,不知道是什么原因
代码如下:
class CaluButtonHandler implements ActionListener
{
String a,b;
private double x1,y1,x2,y2;//直线坐标
PicPanel p;
CaluButtonHandler(PicPanel p)
{
this.p = p;
}
public void actionPerformed(ActionEvent e)
{
a=tf1.getText();
b=tf2.getText();
if(a.equals("") || b.equals(""))
{
JOptionPane.showMessageDialog(WeightTest.this,"请输入相关信息");
return;
}
try
{
weight=Double.parseDouble(a);
height=Double.parseDouble(b);
}
catch(NumberFormatException nfe)
{
System.out.println("只处理数字信息。");
return;
}
emi=weight/(height*height/100/100);
tf.setText(String.valueOf(emi));
// 数据库更新
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=[Weight_BMI.mdb]";
String command=null;
ResultSet rs=null;
Statement sm=null;
String name1,name2,name3,name4;
int num1=0;
int num2=0;
int num3=0;
int num4=0;
try
{
Connection con=DriverManager.getConnection(url);
//DatabaseMetaData dmd=con.getMetaData();//DMD为连接的相应情况
sm=con.createStatement();
//String s=dmd.getDatabaseProductName();//获取数据库名称
command="select normalweight,overweight,fatness1,fatness2 from Weight";
rs=sm.executeQuery(command);
System.out.println("ok1");
while(rs.next())
{
name1=rs.getString("normalweight");
num1=Integer.parseInt(name1);
name2=rs.getString("overweight");
num2=Integer.parseInt(name2);
name3=rs.getString("fatness1");
num3=Integer.parseInt(name3);
name4=rs.getString("fatness2");
num4=Integer.parseInt(name4);
}
System.out.print("ok2");
if(emi>=18.5 && emi<=22.9)
{
command="updata Weight"+ "set"+ "normalweight"+"num1++";
rs=sm.executeQuery(command);
con.commit();//终止事务
con.close();
}
else if(emi>22.9 && emi<=24.9)
{
//同上边差不多
}
else if(emi>24.9 && emi<=29.9)
{
//同上边差不多 }
else if(emi>30)
{
//同上边差不多 }
}
ret retTest=new ret();
y1=retTest.rety1();
y2=retTest.rety2();
x1=115;
x2=500;
p.drawLine(x1,y1,x2,y2);
}
CaluButtonHandler chandler=new CaluButtonHandler(panel2);
calubutton.addActionListener(chandler);
//Acess数据库连接
class databaseHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=[Weight_BMI.mdb]";
String command=null;
ResultSet rs=null;
Statement sm=null;
String name1,name2,name3,name4;
try
{
Connection con=DriverManager.getConnection(url);
//DatabaseMetaData dmd=con.getMetaData();//DMD为连接的相应情况
sm=con.createStatement();
//String s=dmd.getDatabaseProductName();//获取数据库名称
command="select normalweight,overweight,fatness1,fatness2 from Weight";
rs=sm.executeQuery(command);
while(rs.next())
{
name1=rs.getString("normalweight");
name2=rs.getString("overweight");
name3=rs.getString("fatness1");
name4=rs.getString("fatness2");
jt.setText("normalweight: "+name1+'\n'+"overweight: "+name2+'\n'
+"fatness1: "+name3+'\n'+"fatness2: "+name4);
}
}
catch(SQLException ex)
{
System.out.println("SQLException:");
while(ex!=null)
{
System.out.println("Message:"+ex.getMessage());
}
ex=ex.getNextException();
}
}
}
databaseHandler dhandler=new databaseHandler();
databasebutton.addActionListener(dhandler);
mainFrame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e){System.exit(0);}
});
mainFrame.setVisible(true);//一般放在最后面
}
public static void main(String[] args)
{
new WeightTest();
}
}
代码如下:
class CaluButtonHandler implements ActionListener
{
String a,b;
private double x1,y1,x2,y2;//直线坐标
PicPanel p;
CaluButtonHandler(PicPanel p)
{
this.p = p;
}
public void actionPerformed(ActionEvent e)
{
a=tf1.getText();
b=tf2.getText();
if(a.equals("") || b.equals(""))
{
JOptionPane.showMessageDialog(WeightTest.this,"请输入相关信息");
return;
}
try
{
weight=Double.parseDouble(a);
height=Double.parseDouble(b);
}
catch(NumberFormatException nfe)
{
System.out.println("只处理数字信息。");
return;
}
emi=weight/(height*height/100/100);
tf.setText(String.valueOf(emi));
// 数据库更新
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=[Weight_BMI.mdb]";
String command=null;
ResultSet rs=null;
Statement sm=null;
String name1,name2,name3,name4;
int num1=0;
int num2=0;
int num3=0;
int num4=0;
try
{
Connection con=DriverManager.getConnection(url);
//DatabaseMetaData dmd=con.getMetaData();//DMD为连接的相应情况
sm=con.createStatement();
//String s=dmd.getDatabaseProductName();//获取数据库名称
command="select normalweight,overweight,fatness1,fatness2 from Weight";
rs=sm.executeQuery(command);
System.out.println("ok1");
while(rs.next())
{
name1=rs.getString("normalweight");
num1=Integer.parseInt(name1);
name2=rs.getString("overweight");
num2=Integer.parseInt(name2);
name3=rs.getString("fatness1");
num3=Integer.parseInt(name3);
name4=rs.getString("fatness2");
num4=Integer.parseInt(name4);
}
System.out.print("ok2");
if(emi>=18.5 && emi<=22.9)
{
command="updata Weight"+ "set"+ "normalweight"+"num1++";
rs=sm.executeQuery(command);
con.commit();//终止事务
con.close();
}
else if(emi>22.9 && emi<=24.9)
{
//同上边差不多
}
else if(emi>24.9 && emi<=29.9)
{
//同上边差不多 }
else if(emi>30)
{
//同上边差不多 }
}
ret retTest=new ret();
y1=retTest.rety1();
y2=retTest.rety2();
x1=115;
x2=500;
p.drawLine(x1,y1,x2,y2);
}
CaluButtonHandler chandler=new CaluButtonHandler(panel2);
calubutton.addActionListener(chandler);
//Acess数据库连接
class databaseHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=[Weight_BMI.mdb]";
String command=null;
ResultSet rs=null;
Statement sm=null;
String name1,name2,name3,name4;
try
{
Connection con=DriverManager.getConnection(url);
//DatabaseMetaData dmd=con.getMetaData();//DMD为连接的相应情况
sm=con.createStatement();
//String s=dmd.getDatabaseProductName();//获取数据库名称
command="select normalweight,overweight,fatness1,fatness2 from Weight";
rs=sm.executeQuery(command);
while(rs.next())
{
name1=rs.getString("normalweight");
name2=rs.getString("overweight");
name3=rs.getString("fatness1");
name4=rs.getString("fatness2");
jt.setText("normalweight: "+name1+'\n'+"overweight: "+name2+'\n'
+"fatness1: "+name3+'\n'+"fatness2: "+name4);
}
}
catch(SQLException ex)
{
System.out.println("SQLException:");
while(ex!=null)
{
System.out.println("Message:"+ex.getMessage());
}
ex=ex.getNextException();
}
}
}
databaseHandler dhandler=new databaseHandler();
databasebutton.addActionListener(dhandler);
mainFrame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e){System.exit(0);}
});
mainFrame.setVisible(true);//一般放在最后面
}
public static void main(String[] args)
{
new WeightTest();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货