异常情况是
com.microsoft.sqlserver.jdbc.SQLServerException: '@P1' 附近有语法错误。
Bean和DBUtil部分应该是没有问题的。下面的代码是查询语句以及Frame框架里查询还有上一个,下一个三个按钮的代码。
数据库就是简单的一个表 应该没有问题。
- Java code
package sel;import Bean.WaresBean;import db.DBUtil;import java.sql.Connection;import java.util.ArrayList;public class WaresSel { public ArrayList select(String s1,String s2,int row){ Connection con= DBUtil.getConnection(); java.sql.PreparedStatement ps=null; java.sql.ResultSet rs=null; ArrayList array=new ArrayList(); String sql="select *from war order by ? ?"; try{ ps=con.prepareStatement(sql); ps.setString(1, s1); ps.setString(2, s2); rs=ps.executeQuery(); rs.absolute(row); array.add(rs.getString(1)); array.add(rs.getString(2)); array.add(rs.getString(3)); array.add(rs.getString(4)); array.add(rs.getString(5)); }catch (java.sql.SQLException e){ e.printStackTrace(); }finally{ DBUtil.closeAll(con, ps, rs); } return array; } public int getRow(String s1,String s2){ Connection con= DBUtil.getConnection(); java.sql.PreparedStatement ps=null; java.sql.ResultSet rs=null; ArrayList array=new ArrayList(); String sql="select *from war order by ? ?"; try{ ps=con.prepareStatement(sql); ps.setString(1, s1); ps.setString(2, s2); rs=ps.executeQuery(); int row=rs.getRow(); return row; }catch (java.sql.SQLException e){ e.printStackTrace(); }finally{ DBUtil.closeAll(con, ps, rs); } return 0; }}
- Java code
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String s1 = jComboBox1.getSelectedItem().toString(); String s2 = jComboBox2.getSelectedItem().toString(); if(s1.equals("商品名称")){ s1="waresName"; }else if(s1.equals("商品价格")){ s1="waresPrice"; }else if(s1.equals("折扣额")){ s1="rebate"; }else{ s1="surplusCount"; } if (s2.equals("降序")) { s2 = "desc"; } else { s1 = null; } ArrayList a2 = new ArrayList(); WaresSel ws = new WaresSel(); int row = ws.getRow(s1, s2) + 1; a2 = ws.select(s1, s2, row); if(a2.toString().length()<s1.length()){ javax.swing.JOptionPane.showMessageDialog(this, "没有下一个商品","错误",0); } jTextArea1.setText(a2.get(1).toString()); jTextField1.setText(a2.get(2).toString()); jTextField2.setText(a2.get(3).toString()); jTextField3.setText(a2.get(4).toString()); jTextArea2.setText(a2.get(5).toString()); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String s1 = jComboBox1.getSelectedItem().toString(); String s2 = jComboBox2.getSelectedItem().toString(); if(s1.equals("商品名称")){ s1="waresName"; }else if(s1.equals("商品价格")){ s1="waresPrice"; }else if(s1.equals("折扣额")){ s1="rebate"; }else{ s1="surplusCount"; } if (s2.equals("降序")) { s2 = "desc"; } else { s1 = null; } ArrayList a1 = new ArrayList(); WaresSel ws = new WaresSel(); int row = ws.getRow(s1, s2) - 1; if (row <= 0) { javax.swing.JOptionPane .showMessageDialog(this, "没有上一个商品。", "错误", 0); return; } a1 = ws.select(s1, s2, row); jTextArea1.setText(a1.get(1).toString()); jTextField1.setText(a1.get(2).toString()); jTextField2.setText(a1.get(3).toString()); jTextField3.setText(a1.get(4).toString()); jTextArea2.setText(a1.get(5).toString()); } private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String s1 = jComboBox1.getSelectedItem().toString(); String s2 = jComboBox2.getSelectedItem().toString(); ArrayList a = new ArrayList(); if(s1.equals("商品名称")){ s1="waresName"; }else if(s1.equals("商品价格")){ s1="waresPrice"; }else if(s1.equals("折扣额")){ s1="rebate"; }else{ s1="surplusCount"; } if (s2.equals("降序")) { s2 = "desc"; } else { s1 = null; } WaresSel ws = new WaresSel(); a =ws.select(s1, s2, 1); jTextArea1.setText(a.get(1).toString()); jTextField1.setText(a.get(2).toString()); jTextField2.setText(a.get(3).toString()); jTextField3.setText(a.get(4).toString()); jTextArea2.setText(a.get(5).toString()); }