import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class QueryDB{
public static void main(String args[]){
JFrame myFrame=new QueryFrame();
myFrame.setVisible(true);
}
} class QueryFrame extends JFrame implements ActionListener{
private Connection con=null;
private Statement stmt=null;
private ResultSet rs=null;
private JLabel conditionlabel=new JLabel("请填写下列查询条件",
         SwingConstants.CENTER);
private JLabel namelabel=new JLabel("姓名",SwingConstants.RIGHT);
private JTextField name=new JTextField(8);
private JLabel sexlabel=new JLabel("性别",SwingConstants.RIGHT);
private JTextField sex=new JTextField(3);
private JLabel agelabel=new JLabel("年龄",SwingConstants.RIGHT);
private JTextField age=new JTextField(3);
private JLabel majorlabel=new JLabel("专业",SwingConstants.RIGHT);
private JTextField major=new JTextField(10);
private JButton commit=new JButton("递交");
private JTextArea resultarea=new JTextArea(10,28);
private String command=null;
public QueryFrame(){
setTitle("数据库查询");
setSize(500,260);
addWindowListener(new WindowAdapter(){
public void WindowClosing(WindowEvent e){
System.exit(0);
}
});
getContentPane().setLayout(new FlowLayout());
JPanel jp_1=new JPanel();
jp_1.add(namelabel);jp_1.add(name);
jp_1.add(sexlabel);jp_1.add(sex);
jp_1.add(agelabel);jp_1.add(age);
jp_1.add(majorlabel);jp_1.add(major);
JPanel jp_2=new JPanel();
jp_2.setLayout(new BorderLayout());
jp_2.add("North",conditionlabel);
jp_2.add("Center",jp_1);
jp_2.add("East",commit);
JPanel jp_3=new JPanel();
jp_3.setLayout(new BorderLayout());
jp_3.add("North",jp_2);
jp_3.add("Center",new JScrollPane(resultarea));
add(jp_3);

resultarea.setEditable(false);
resultarea.setLineWrap(true);
commit.addActionListener(this);
try{
DriverManager.registerDriver(new
   com.microsoft.jdbc.sqlserver.SQLServerDriver());
con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433",
                                                       "sa","1987@zhu");
stmt=con.createStatement();
}catch(Exception ex){
resultarea.append(ex.getMessage()+"\n");
return;
}

}

public void actionPerformed(ActionEvent evt){
try{
String namevalue=name.getText().trim();
String sexvalue=sex.getText().trim();
String agevalue=age.getText().trim();
String majorvalue=major.getText().trim();
String sname,ssex,sage,major;
sname="LIKE'%"+namevalue+"%'";
ssex="LIKE'%"+sexvalue+"%'";
if(agevalue.equals(""))
sage="BETWEEN 15 AND 35";
else
sage="="+agevalue;
major="LIKE'%"+majorvalue+"%'";
command="SELECT * FROM student WHERE name"+sname+" AND sex"
+ssex+"AND age"+sage+"AND major"+major;
rs=stmt.executeQuery(command);
resultarea.setText("");
if(!rs.next())
resultarea.setText("找不到符合条件的记录");
else{
do{
String rename=rs.getString("name");
String resex=rs.getString("sex");
String reage=rs.getString("age");
String remajor=rs.getString("major");
resultarea.append(rename);
resultarea.append(resex+"     ");
resultarea.append(reage+"     ");
resultarea.append(remajor+"\n");
}while(rs.next());
}

}catch(Exception ex){
resultarea.append(ex.getMessage()+"\n");
}
}
}
编译是通过了,可是查询是报出SQL语法错误,可我看了两天了,也查了数据库的书,也没发现语法错误啊!哪为高手帮忙解决一下啊!!!!!!!!!

解决方案 »

  1.   

    command="SELECT   *   FROM   student   WHERE   name"+sname+"   AND   sex" 
    +ssex+"AND   age"+sage+"AND   major"+major; 你SQL当然错 了
    把上面的改为下面的command="SELECT   *   FROM   student   WHERE   name="+sname+" AND   sex=" 
    +ssex+" AND   age="+sage+" AND   major="+major; 
      

  2.   

    command="SELECT   *   FROM   student   WHERE   name  "+sname+"   AND   sex " +ssex+"AND   age "+sage+" AND   major "+major
    这要有空格
      

  3.   


    where name like ''
    或者like('')
    空格该有的都要有
    先学好sql语法吧