java 将sql server的数据显示在JTable上

SQL Server数据库中的表如下图1所示,表名为stu_info
                                                  
                                                             图1 表stu_Info

上篇已讲连接SQL server,这里不再赘述。我们直接上代码,有详细注释应该很容易
public class QueryJFrame extends JFrame{

	private Connection con;//数据库连接
	private PreparedStatement pstmt;
	private JTable table;//表格
	private DefaultTableModel model;//表格数据模型
	private JTextField delete_text;//输入框
	private JButton delete_button;//按钮
	private ResultSet set=null;
	//界面初始化
	public QueryJFrame() {
		// TODO Auto-generated constructor stub
		this.setBounds(500, 400, 600, 400);
		this.setLayout(null);
		table=new JTable();
		model=new DefaultTableModel();
		table.setModel(model);
		JScrollPane jsp=new JScrollPane(table);
		jsp.setBounds(0, 0, 600, 200);
		this.add(jsp);
		delete_text=new JTextField();
		JLabel jl=new JLabel("第几行:");
		jl.setBounds(120, 220,50,30);
		this.add(jl);
		delete_text=new JTextField();
		delete_text.setBounds(200, 220, 50, 30);
		this.add(delete_text);
		delete_button=new JButton("删除");
		delete_button.setBounds(280, 220, 70, 30);
		this.add(delete_button);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		try{
		initConnection();
		queryData();
		}catch(Exception e){
			e.printStackTrace();
		}
		addListenter();
	}
	//初始化数据库连接
    public void initConnection()throws Exception{
    	//驱动
    	String drivename="com.microsoft.sqlserver.jdbc.SQLServerDriver";
    	//地址,dateName为数据库名
    	String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=hwm_test";
    	//用户密码
    	String username="sa";
    	String password="123";
    	getClass().forName(drivename);
    	//获取连接
    	con=DriverManager.getConnection(dbURL,username,password);
    	if(con!=null){
    		System.out.println("success");
    		
    		}
    	else
    		System.out.println("fail");
    }
    //关闭数据库连接
    public void closeCon(){
    	try{
    	if(pstmt!=null)
    		pstmt.close();
    	if(con!=null)
    		con.close();
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
   
    //查询数据
    public void queryData()throws Exception{
    	String sql="select * from stu_info";
       //执行查询语句获取结果
    	pstmt=con.prepareStatement(sql);
    	set=pstmt.executeQuery();
    	
    	//获取表中列数及列名,作为表格组件的标题
    	ResultSetMetaData rsmd=set.getMetaData();
    	//获得列数
    	int count=rsmd.getColumnCount();
    	////将列名添加到表格模型作为标题
    	for(int i=1;i<=count;i++){
    		model.addColumn(rsmd.getColumnName(i));
    	}
    	//每行设置一个数组
    	String[] row=new String[count];
    	while(set.next()){
    		//将查询到的每行数据赋入数组内
    		for(int i=0;i<count;i++)
    			row[i]=set.getString(i+1);
    		//增加一行
    		model.addRow(row);
    	}
    	//关闭连接
    	set.close();
    	
    }
    
    public void addListenter(){
    	delete_button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				try{
					//获取要删除的行数
					int row=Integer.parseInt(delete_text.getText());
					//获取要删除的行的学生id号
					String stu_id=(String)model.getValueAt(row-1, 0);
					//从数据库删除数据
					String sql="delete from stu_info where stu_Id=?";
					pstmt=con.prepareStatement(sql);
					pstmt.setString(1,stu_id);
					if(pstmt.executeUpdate()==1){
						System.out.println("删除成功");
						//本地删除数据
						model.removeRow(row-1);}
					else
						System.out.println("删除失败");
				}catch(Exception a){
					System.out.println("删除数据出错");
					a.printStackTrace();
				}
			}
		});
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new QueryJFrame();
	}

}


运行结果如下图2所示
                        
                                                                             图 2

    我们成功的将数据添加入table中,实际中可将查询到的数据建立studentInfo的Bean中。我们在输入框中删除第几行(这里没有检测输入的行数是否符合,可自行加入),删除成功如图3,到数据库中刷新stu_info表即可看到数据已成功删除!
       如需添加数据可自行实现该功能(有点懒(づ ̄ 3 ̄)づ),此外上述代码没有关闭数据库连接,需要关闭则调用函数即可       

                                 
                                                                                图3

猜你喜欢

转载自blog.csdn.net/Huang_cainiao/article/details/79579602
今日推荐