我是个初学者希望各位高手能解答
1)我写了一个学生管理系统,主要是查询学生的信息(输入学生的名字就能显示这个学生的信息)
2)我连接数据库成功了可是查询的时候总是出错(主要是想要sql server查询语句怎么写)!!!!
3)我定义了一个按钮JButton (查询按钮)但点击这个按钮时就能查询你想要该学生的信息。
4)然后定义了一个文本框JTextField jtf=new JTextField();
5)然后我想灵活一点,如果你输入名字就能显示你想要的
String n=this.jtf.getText().trim();//得到你输入学生的名字
String sql="select * from stu where stuName=n";//这句话主要是把sql语句传过去,重点就是这里的n,怎么得不到我在文本框里字符串呢???????谢谢各位了!!!!!
1)我写了一个学生管理系统,主要是查询学生的信息(输入学生的名字就能显示这个学生的信息)
2)我连接数据库成功了可是查询的时候总是出错(主要是想要sql server查询语句怎么写)!!!!
3)我定义了一个按钮JButton (查询按钮)但点击这个按钮时就能查询你想要该学生的信息。
4)然后定义了一个文本框JTextField jtf=new JTextField();
5)然后我想灵活一点,如果你输入名字就能显示你想要的
String n=this.jtf.getText().trim();//得到你输入学生的名字
String sql="select * from stu where stuName=n";//这句话主要是把sql语句传过去,重点就是这里的n,怎么得不到我在文本框里字符串呢???????谢谢各位了!!!!!
界面显示可以考虑使用JTable
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Test3 extends JFrame implements ActionListener{
JPanel jp1,jp2;
JLabel jl1;
JTable jt;
JButton jb1,jb2,jb3,jb4;
JScrollPane jsp;
JTextField jtf;
public static void main(String[] args) {
new Test3();
}
public Test3(){
jp1=new JPanel();
jtf=new JTextField(10);
jb1=new JButton("查询");
jb1.addActionListener(this);
jl1=new JLabel("请输入名字");
//把各个空间加入到jp1
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);
jp2=new JPanel();
jb2=new JButton("添加");
jb2.addActionListener(this);
jb3=new JButton("修改");
jb3.addActionListener(this);
jb4=new JButton("删除");
jb4.addActionListener(this);
//把各个按钮加入到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
//中间
//创建一个数据模型对象
StuModel sm=new StuModel();
//初始化JTable
jt=new JTable(sm);
//初始化jsp JScrollPane
jsp=new JScrollPane(jt);
//把jsp放入到jframe
this.add(jsp);
this.add(jp1,"North");
this.add(jp2,"South");
this.setSize(400,300);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent a) {
if(a.getSource()==jb1){
String n=this.jtf.getText().trim();
String sql="select * from stu where stuName='"+n+"'";";//这里有错????????????StuModel sm=new StuModel(sql);
jt.setModel(sm);
}
}
}
package com.test1;import java.sql.*;
import java.util.*;
import javax.swing.table.*;public class StuModel extends AbstractTableModel{
//rowData用来存放行数据
//columnNames存放列名
Vector rowData,columnNames;
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
public void init(String sql){
if(sql.equals("")){
sql="select * from stu";
}
columnNames=new Vector();
//设置列名
columnNames.add("学号");
columnNames.add("名字");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("籍贯");
columnNames.add("系别 ");
rowData=new Vector();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//得到连接
ct=DriverManager.getConnection("jdbc:odbc:mytest","sa","sa");
//创建ps
ps=ct.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Vector hang=new Vector();
hang.add(rs.getString(1));
hang.add(rs.getString(2));
hang.add(rs.getString(3));
hang.add(rs.getInt(4));
hang.add(rs.getString(5));
hang.add(rs.getString(6));
//加入到rowData
rowData.add(hang);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(rs!=null) rs.close();
if(ct!=null) ct.close();
if(ps!=null) ps.close();} catch (Exception e2) {
e2.printStackTrace();
}
}
}
public StuModel(String sql){
this.init(sql);
}
//用来初始化我的数据模型构造函数
public StuModel(){
this.init("");
}
//得到共有多少列
public int getColumnCount() {
return this.columnNames.size();
}
//得到共有多少行
public int getRowCount() {
return this.rowData.size();
}
//得到某行某列的数据
public Object getValueAt(int row, int colum) {
return ((Vector) this.rowData.get(row)).get(colum);
}
public String getColumnName(int arg0) {
return (String)this.columnNames.get(arg0);
}
}
PreparedStatement pstmt;
db = new DB();//创建db类.
Connection conn = db.getConn();
String sql="select * from stu where stuName=?"
pstmt.setString(1, this.jtf.getText().trim());
pstmt = db.getPstmt(conn, sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
row.add(rs.getString(1));
}
而且你给出的语句双引号也不成对,好像是5个
System.out.println(n);
String sql="select * from stu where stuName='"+n+"'";
System.out.println(sql);
然后把结果贴上来
没有显示n 的值
中的this给去掉了就可以拿到n的值了可是还不行啊?但是如果换个字段就行例如查年龄就能,查姓名就不行了,在数据库中定义的我都对过了都没有问题
例如String sql="select * from stu where stuAge=30";
这样就能把年龄是三十的都给我显示出来了,可是一到查姓名就不行了我郁闷啊