又是JAVA与数据库的问题!!!!!

zhujinbo 2007-12-06 04:55:45
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语法错误,可我看了两天了,也查了数据库的书,也没发现语法错误啊!

哪为高手帮忙解决一下啊!!!!!!!!!
...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujinbo 2007-12-07
  • 打赏
  • 举报
回复
谢谢大家了!我会给分的!
Not_Me_Want 2007-12-06
  • 打赏
  • 举报
回复
楼主写东西要仔细啊,有时候就一个小小的错误会让你郁闷很久的
leem06 2007-12-06
  • 打赏
  • 举报
回复
name后面没有等号....
neptune0229 2007-12-06
  • 打赏
  • 举报
回复

where name like ''
或者like('')


空格该有的都要有
先学好sql语法吧
shaoml 2007-12-06
  • 打赏
  • 举报
回复
command="SELECT * FROM student WHERE name "+sname+" AND sex " +ssex+"AND age "+sage+" AND major "+major;
这要有空格。。。
zs_han 2007-12-06
  • 打赏
  • 举报
回复
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;

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧